File trigona_be6dfedd91e1ebc81d58a61b05b0ef93322425b247636a0f7f5c3eeebbc52edd.exe
Function:
    0040d570
    0040d570fn_40d570:
    0040d570push r14
    0040d572push r13
    0040d574push rdi
    0040d575push rsi
    0040d576push rbx
    0040d577sub rsp, 32
    0040d57bmov rbx, rdx
    0040d57emov rax, rcx
    0040d581mov rdx, rbx
    0040d584cmp rax, rdx
    0040d587jne 0x40d590
    0040d589xor eax, eax
    0040d58bjmp 0x40d630
    0040d590
    0040d590loc_40d590:
    0040d590test rax, rax
    0040d593jne 0x40d5a8
    0040d595mov eax, [rdx-4]
    0040d598shr eax, 31
    0040d59badd eax, [rdx-4]
    0040d59esar eax, 1
    0040d5a1neg eax
    0040d5a3jmp 0x40d630
    0040d5a8
    0040d5a8loc_40d5a8:
    0040d5a8test rdx, rdx
    0040d5abjne 0x40d5bd
    0040d5admov ecx, [rax-4]
    0040d5b0shr ecx, 31
    0040d5b3add ecx, [rax-4]
    0040d5b6sar ecx, 1
    0040d5b9mov eax, ecx
    0040d5bbjmp 0x40d630
    0040d5bd
    0040d5bdloc_40d5bd:
    0040d5bdmov edi, [rax-4]
    0040d5c0shr edi, 31
    0040d5c3add edi, [rax-4]
    0040d5c6sar edi, 1
    0040d5c9mov r13l, [rdx-4]
    0040d5cdshr r13l, 31
    0040d5d1add r13l, [rdx-4]
    0040d5d5sar r13l, 1
    0040d5d9mov esi, edi
    0040d5dbcmp esi, r13l
    0040d5dejle 0x40d5e3
    0040d5e0mov esi, r13l
    0040d5e3
    0040d5e3loc_40d5e3:
    0040d5e3call fn_40d180
    0040d5e8mov r14, rax
    0040d5ebmov rcx, rbx
    0040d5eecall fn_40d180
    0040d5f3mov rcx, rax
    0040d5f6test esi, esi
    0040d5f8jle 0x40d62a
    0040d5fa
    0040d5faloc_40d5fa:
    0040d5famovzx eax, [r14]
    0040d5femovzx edx, [rcx]
    0040d601sub eax, edx
    0040d603test eax, eax
    0040d605jne 0x40d630
    0040d607cmp esi, 1
    0040d60aje 0x40d62a
    0040d60cmovzx eax, [r14+2]
    0040d611movzx edx, [rcx+2]
    0040d615sub eax, edx
    0040d617test eax, eax
    0040d619jne 0x40d630
    0040d61badd r14, 4
    0040d61fadd rcx, 4
    0040d623sub esi, 2
    0040d626test esi, esi
    0040d628jg 0x40d5fa
    0040d62a
    0040d62aloc_40d62a:
    0040d62anop
    0040d62bmov eax, edi
    0040d62dsub eax, r13l
    0040d630
    0040d630loc_40d630:
    0040d630add rsp, 32
    0040d634pop rbx
    0040d635pop rsi
    0040d636pop rdi
    0040d637pop r13
    0040d639pop r14
    0040d63bret
    0040d570
    0040d63c
    0040d63c // align 0x10
    0040d640
    0040d640fn_40d640:
    0040d640sub rsp, 40
    0040d644call fn_40d570
    0040d649add rsp, 40
    0040d64dret
    0040d640
    0040d64e
    0040d64e // align 0x10
    0040d650
    0040d650fn_40d650:
    0040d650push rbx
    0040d651sub rsp, 32
    0040d655mov rbx, rcx
    0040d658mov eax, r8l
    0040d65bxor ecx, ecx
    0040d65dtest rdx, rdx
    0040d660je 0x40d668
    0040d662mov ecx, [rdx-4]
    0040d665shr ecx, 1
    0040d668
    0040d668loc_40d668:
    0040d668cmp eax, 1
    0040d66bjge 0x40d671
    0040d66dxor eax, eax
    0040d66fjmp 0x40d67a
    0040d671
    0040d671loc_40d671:
    0040d671sub eax, 1
    0040d674cmp eax, ecx
    0040d676jle 0x40d67a
    0040d678mov eax, ecx
    0040d67a
    0040d67aloc_40d67a:
    0040d67atest r9l, r9l
    0040d67djge 0x40d683
    0040d67fxor ecx, ecx
    0040d681jmp 0x40d68d
    0040d683
    0040d683loc_40d683:
    0040d683sub ecx, eax
    0040d685cmp ecx, r9l
    0040d688jle 0x40d68d
    0040d68amov ecx, r9l
    0040d68d
    0040d68dloc_40d68d:
    0040d68dmov r8, rbx
    0040d690movsxd rax, eax
    0040d693lea rdx, [rdx+2*rax]
    0040d697mov eax, ecx
    0040d699mov rcx, r8
    0040d69cmov r8l, eax
    0040d69fcall fn_40c030
    0040d6a4mov rax, rbx
    0040d6a7add rsp, 32
    0040d6abpop rbx
    0040d6acret
    0040d650
    0040d6ad
    0040d6ad // align 0x10
    0040d6b0
    0040d6b0fn_40d6b0:
    0040d6b0push rdi
    0040d6b1push rsi
    0040d6b2push rbx
    0040d6b3sub rsp, 32
    0040d6b7mov rbx, rcx
    0040d6bamov esi, edx
    0040d6bcxor edi, edi
    0040d6betest esi, esi
    0040d6c0jle 0x40d6f7
    0040d6c2mov ecx, esi
    0040d6c4call fn_40bcc0
    0040d6c9mov rdi, rax
    0040d6ccxor eax, eax
    0040d6cemov rcx, [rbx]
    0040d6d1test rcx, rcx
    0040d6d4je 0x40d6dc
    0040d6d6mov eax, [rcx-4]
    0040d6d9shr eax, 1
    0040d6dc
    0040d6dcloc_40d6dc:
    0040d6dctest eax, eax
    0040d6dejle 0x40d6f7
    0040d6e0cmp eax, esi
    0040d6e2jle 0x40d6e6
    0040d6e4mov eax, esi
    0040d6e6
    0040d6e6loc_40d6e6:
    0040d6e6mov rdx, rdi
    0040d6e9mov r8l, eax
    0040d6ecadd r8l, r8l
    0040d6efmovsxd r8, r8l
    0040d6f2call fn_405ac0
    0040d6f7
    0040d6f7loc_40d6f7:
    0040d6f7mov rcx, rbx
    0040d6famov rdx, rdi
    0040d6fdcall fn_40d020
    0040d702add rsp, 32
    0040d706pop rbx
    0040d707pop rsi
    0040d708pop rdi
    0040d709ret
    0040d6b0
    0040d70a
    0040d70a // align 0x10
    0040d710
    0040d710fn_40d710:
    0040d710mov rax, rcx
    0040d713test rax, rax
    0040d716jne 0x40d723
    0040d718mov rax, [rip+0x4dab1]
    0040d71flea rax, [rax+16]
    0040d723
    0040d723loc_40d723:
    0040d723ret
    0040d710
    0040d724
    0040d724 // align 0x10
    0040d730
    0040d730fn_40d730:
    0040d730sub rsp, 40
    0040d734mov [rsp+56], dx
    0040d739lea rdx, [rsp+56]
    0040d73emov r8l, 1
    0040d744call fn_40bfd0
    0040d749add rsp, 40
    0040d74dret
    0040d730
    0040d74e
    0040d74e // align 0x10
    0040d750
    0040d750fn_40d750:
    0040d750push rsi
    0040d751push rbx
    0040d752sub rsp, 40
    0040d756mov rbx, rcx
    0040d759mov rsi, rdx
    0040d75cmov rcx, rsi
    0040d75fcall fn_40c580
    0040d764mov rcx, rbx
    0040d767mov rdx, rsi
    0040d76amov r8l, eax
    0040d76dcall fn_40c1a0
    0040d772add rsp, 40
    0040d776pop rbx
    0040d777pop rsi
    0040d778ret
    0040d750
    0040d779
    0040d779 // align 0x10
    0040d780
    0040d780fn_40d780:
    0040d780push rsi
    0040d781push rbx
    0040d782sub rsp, 40
    0040d786mov rbx, rcx
    0040d789mov rsi, rdx
    0040d78cmov rcx, rsi
    0040d78fcall fn_40c5a0
    0040d794mov rcx, rbx
    0040d797mov rdx, rsi
    0040d79amov r8l, eax
    0040d79dcall fn_40bfd0
    0040d7a2add rsp, 40
    0040d7a6pop rbx
    0040d7a7pop rsi
    0040d7a8ret
    0040d780
    0040d7a9
    0040d7a9 // align 0x10
    0040d7b0
    0040d7b0fn_40d7b0:
    0040d7b0sub rsp, 40
    0040d7b4mov eax, r8l
    0040d7b7mov r8, rdx
    0040d7bajmp 0x40d7c3
    0040d7bc
    0040d7bcloc_40d7bc:
    0040d7bcsub eax, 1
    0040d7bfadd r8, 2
    0040d7c3
    0040d7c3loc_40d7c3:
    0040d7c3test eax, eax
    0040d7c5jle 0x40d7ce
    0040d7c7cmp [r8], 0
    0040d7ccjne 0x40d7bc
    0040d7ce
    0040d7celoc_40d7ce:
    0040d7cemov rax, r8
    0040d7d1sub rax, rdx
    0040d7d4sar rax, 1
    0040d7d8jns 0x40d7de
    0040d7daadc rax, 0
    0040d7de
    0040d7deloc_40d7de:
    0040d7demov r8l, eax
    0040d7e1call fn_40bfd0
    0040d7e6add rsp, 40
    0040d7earet
    0040d7b0
    0040d7eb
    0040d7eb // align 0x10
    0040d7f0
    0040d7f0fn_40d7f0:
    0040d7f0sub rsp, 40
    0040d7f4test rdx, rdx
    0040d7f7jne 0x40d800
    0040d7f9call fn_40bcf0
    0040d7fejmp 0x40d814
    0040d800
    0040d800loc_40d800:
    0040d800mov rax, rdx
    0040d803mov r8l, [rdx-4]
    0040d807movzx r9l, [rdx-12]
    0040d80cmov rdx, rax
    0040d80fcall fn_40c0d0
    0040d814
    0040d814loc_40d814:
    0040d814add rsp, 40
    0040d818ret
    0040d7f0
    0040d819
    0040d819 // align 0x10
    0040d820
    0040d820fn_40d820:
    0040d820sub rsp, 40
    0040d824xor eax, eax
    0040d826test rdx, rdx
    0040d829je 0x40d837
    0040d82bmov eax, [rdx-4]
    0040d82eshr eax, 31
    0040d831add eax, [rdx-4]
    0040d834sar eax, 1
    0040d837
    0040d837loc_40d837:
    0040d837mov r8l, eax
    0040d83acall fn_40bfd0
    0040d83fadd rsp, 40
    0040d843ret
    0040d820
    0040d844
    0040d844 // align 0x10
    0040d850
    0040d850fn_40d850:
    0040d850sub rsp, 40
    0040d854test rdx, rdx
    0040d857jne 0x40d860
    0040d859call fn_40bd90
    0040d85ejmp 0x40d86f
    0040d860
    0040d860loc_40d860:
    0040d860mov rax, rdx
    0040d863mov r8l, [rdx-4]
    0040d867mov rdx, rax
    0040d86acall fn_40c030
    0040d86f
    0040d86floc_40d86f:
    0040d86fadd rsp, 40
    0040d873ret
    0040d850
    0040d874
    0040d874 // align 0x10
    0040d880
    0040d880fn_40d880:
    0040d880push rbp
    0040d881push rdi
    0040d882push rsi
    0040d883sub rsp, 288
    0040d88amov rbp, rsp
    0040d88dmov rax, rcx
    0040d890mov rsi, rdx
    0040d893movzx rcx, [rsi]
    0040d897lea rcx, [rcx+1]
    0040d89blea rdi, [rbp+32]
    0040d89frep movsb [rdi], [rsi]
    0040d8a1mov rcx, rax
    0040d8a4lea rdx, [rbp+33]
    0040d8a8movzx r8, [rbp+32]
    0040d8admov r9l, [rip+0x58164]
    0040d8b4call fn_40c0d0
    0040d8b9lea rsp, [rbp+288]
    0040d8c0pop rsi
    0040d8c1pop rdi
    0040d8c2pop rbp
    0040d8c3ret
    0040d880
    0040d8c4
    0040d8c4 // align 0x10
    0040d8d0
    0040d8d0fn_40d8d0:
    0040d8d0push rbp
    0040d8d1push r13
    0040d8d3push rdi
    0040d8d4push rsi
    0040d8d5push rbx
    0040d8d6sub rsp, 48
    0040d8damov rbp, rsp
    0040d8ddmov rbx, rcx
    0040d8e0mov esi, edx
    0040d8e2test esi, esi
    0040d8e4jg 0x40d8f3
    0040d8e6mov rcx, rbx
    0040d8e9call fn_40bcf0
    0040d8eejmp 0x40d996
    0040d8f3
    0040d8f3loc_40d8f3:
    0040d8f3mov rax, [rbx]
    0040d8f6test rax, rax
    0040d8f9je 0x40d951
    0040d8fbcmp [rax-8], 1
    0040d8ffjne 0x40d951
    0040d901lea rax, [rax-16]
    0040d905mov [rbp+40], rax
    0040d909cmp esi, 0x7ffffff7
    0040d90fjb 0x40d916
    0040d911call fn_4085f0
    0040d916
    0040d916loc_40d916:
    0040d916lea rcx, [rbp+40]
    0040d91amov edx, esi
    0040d91cadd edx, 1
    0040d91fadd edx, edx
    0040d921add edx, 16
    0040d924movsxd rdx, edx
    0040d927call fn_405760
    0040d92cmov rax, [rbp+40]
    0040d930mov [rax+12], esi
    0040d933mov rax, [rbp+40]
    0040d937lea rax, [rax+16]
    0040d93bmov [rbx], rax
    0040d93emov rcx, [rbx]
    0040d941call fn_40d710
    0040d946movsxd rsi, esi
    0040d949mov [rax+2*rsi], 0
    0040d94fjmp 0x40d996
    0040d951
    0040d951loc_40d951:
    0040d951mov ecx, esi
    0040d953call fn_40bbc0
    0040d958mov rdi, rax
    0040d95bmov rax, [rbx]
    0040d95etest rax, rax
    0040d961je 0x40d993
    0040d963mov r13l, [rax-4]
    0040d967cmp r13l, esi
    0040d96ajle 0x40d96f
    0040d96cmov r13l, esi
    0040d96f
    0040d96floc_40d96f:
    0040d96fmov rcx, [rbx]
    0040d972call fn_40d710
    0040d977mov rcx, rax
    0040d97amov rdx, rdi
    0040d97dmov r8l, r13l
    0040d980add r8l, r8l
    0040d983movsxd r8, r8l
    0040d986call fn_405ac0
    0040d98bmov rcx, rbx
    0040d98ecall fn_40bcf0
    0040d993
    0040d993loc_40d993:
    0040d993mov [rbx], rdi
    0040d996
    0040d996loc_40d996:
    0040d996lea rsp, [rbp+48]
    0040d99apop rbx
    0040d99bpop rsi
    0040d99cpop rdi
    0040d99dpop r13
    0040d99fpop rbp
    0040d9a0ret
    0040d8d0
    0040d9a1
    0040d9a1 // align 0x10
    0040d9b0
    0040d9b0fn_40d9b0:
    0040d9b0push r14
    0040d9b2push r13
    0040d9b4push rdi
    0040d9b5push rsi
    0040d9b6push rbx
    0040d9b7sub rsp, 48
    0040d9bbmov [rsp+40], rcx
    0040d9c0mov rbx, rdx
    0040d9c3mov rcx, rbx
    0040d9c6test rcx, rcx
    0040d9c9je 0x40da65
    0040d9cfmov rax, [rsp+40]
    0040d9d4mov rax, [rax]
    0040d9d7test rax, rax
    0040d9dajne 0x40d9eb
    0040d9dcmov rcx, [rsp+40]
    0040d9e1mov rdx, rbx
    0040d9e4call fn_40c360
    0040d9e9jmp 0x40da65
    0040d9eb
    0040d9ebloc_40d9eb:
    0040d9ebmov esi, [rax-4]
    0040d9eemov edi, [rcx-4]
    0040d9f1mov r13l, esi
    0040d9f4add r13l, edi
    0040d9f7mov eax, r13l
    0040d9fatest eax, 0xffffffffc0000000
    0040da00je 0x40da07
    0040da02call fn_4085f0
    0040da07
    0040da07loc_40da07:
    0040da07mov rcx, [rsp+40]
    0040da0ccall fn_40c680
    0040da11mov r14, rax
    0040da14mov rcx, [rsp+40]
    0040da19mov edx, r13l
    0040da1ccall fn_40d8d0
    0040da21mov rcx, rbx
    0040da24call fn_40d710
    0040da29cmp r14, rax
    0040da2cjne 0x40da3d
    0040da2emov rcx, [rsp+40]
    0040da33call fn_40c680
    0040da38mov r14, rax
    0040da3bjmp 0x40da40
    0040da3d
    0040da3dloc_40da3d:
    0040da3dmov r14, rax
    0040da40
    0040da40loc_40da40:
    0040da40mov rcx, [rsp+40]
    0040da45call fn_40c680
    0040da4amov rcx, r14
    0040da4dadd esi, 1
    0040da50mov esi, esi
    0040da52lea rdx, [rax+2*rsi-2]
    0040da57mov r8l, edi
    0040da5aadd r8l, r8l
    0040da5dmov r8l, r8l
    0040da60call fn_405ac0
    0040da65
    0040da65loc_40da65:
    0040da65add rsp, 48
    0040da69pop rbx
    0040da6apop rsi
    0040da6bpop rdi
    0040da6cpop r13
    0040da6epop r14
    0040da70ret
    0040d9b0
    0040da71
    0040da71 // align 0x10
    0040da80
    0040da80fn_40da80:
    0040da80push r14
    0040da82push r13
    0040da84push rdi
    0040da85push rsi
    0040da86push rbx
    0040da87sub rsp, 48
    0040da8bmov [rsp+40], rcx
    0040da90mov rbx, rdx
    0040da93mov rsi, r8
    0040da96mov rax, rbx
    0040da99test rax, rax
    0040da9cjne 0x40dab0
    0040da9emov rcx, [rsp+40]
    0040daa3mov rdx, rsi
    0040daa6call fn_40c360
    0040daabjmp 0x40db98
    0040dab0
    0040dab0loc_40dab0:
    0040dab0mov rdx, rsi
    0040dab3test rdx, rdx
    0040dab6jne 0x40daca
    0040dab8mov rcx, [rsp+40]
    0040dabdmov rdx, rbx
    0040dac0call fn_40c360
    0040dac5jmp 0x40db98
    0040daca
    0040dacaloc_40daca:
    0040dacamov rcx, [rsp+40]
    0040dacfmov rcx, [rcx]
    0040dad2cmp rcx, rax
    0040dad5jne 0x40dae9
    0040dad7mov rcx, [rsp+40]
    0040dadcmov rdx, rsi
    0040dadfcall fn_40d9b0
    0040dae4jmp 0x40db98
    0040dae9
    0040dae9loc_40dae9:
    0040dae9cmp rcx, rdx
    0040daecjne 0x40db7e
    0040daf2mov r13l, [rax-4]
    0040daf6mov r14l, [rdx-4]
    0040dafamov edi, r13l
    0040dafdadd edi, r14l
    0040db00mov eax, r13l
    0040db03and eax, r14l
    0040db06mov ecx, edi
    0040db08not ecx
    0040db0amov edx, r13l
    0040db0dor edx, r14l
    0040db10and ecx, edx
    0040db12or eax, ecx
    0040db14test eax, 0xffffffff80000000
    0040db1aje 0x40db21
    0040db1ccall fn_4085f0
    0040db21
    0040db21loc_40db21:
    0040db21mov ecx, edi
    0040db23call fn_40bbc0
    0040db28mov rdi, rax
    0040db2bmov rcx, rbx
    0040db2ecall fn_40d710
    0040db33mov rbx, rdi
    0040db36mov rcx, rax
    0040db39mov rdx, rbx
    0040db3cmov r8l, r13l
    0040db3fadd r8l, r8l
    0040db42mov r8l, r8l
    0040db45call fn_405ac0
    0040db4amov rcx, rsi
    0040db4dcall fn_40d710
    0040db52mov rcx, rax
    0040db55mov r13l, r13l
    0040db58lea rdx, [rbx+2*r13]
    0040db5cmov r8l, r14l
    0040db5fadd r8l, r8l
    0040db62mov r8l, r8l
    0040db65call fn_405ac0
    0040db6amov rcx, [rsp+40]
    0040db6fcall fn_40bcf0
    0040db74mov rax, [rsp+40]
    0040db79mov [rax], rdi
    0040db7cjmp 0x40db98
    0040db7e
    0040db7eloc_40db7e:
    0040db7emov rcx, [rsp+40]
    0040db83mov rdx, rbx
    0040db86call fn_40c360
    0040db8bmov rcx, [rsp+40]
    0040db90mov rdx, rsi
    0040db93call fn_40d9b0
    0040db98
    0040db98loc_40db98:
    0040db98add rsp, 48
    0040db9cpop rbx
    0040db9dpop rsi
    0040db9epop rdi
    0040db9fpop r13
    0040dba1pop r14
    0040dba3ret
    0040da80
    0040dba4
    0040dba4 // align 0x10
    0040dbb0
    0040dbb0fn_40dbb0:
    0040dbb0push rbp
    0040dbb1push rbx
    0040dbb2sub rsp, 40
    0040dbb6mov rbp, rsp
    0040dbb9mov [rbp+80], r8
    0040dbbdmov [rbp+88], r9
    0040dbc1mov [rbp+64], rcx
    0040dbc5mov [rbp+72], edx
    0040dbc8lea rbx, [rbp+80]
    0040dbccmov rcx, [rbp+64]
    0040dbd0mov edx, [rbp+72]
    0040dbd3mov r8, rbx
    0040dbd6call fn_40d3e0
    0040dbdblea rsp, [rbp+40]
    0040dbdfpop rbx
    0040dbe0pop rbp
    0040dbe1ret
    0040dbb0
    0040dbe2
    0040dbe2 // align 0x10
    0040dbf0
    0040dbf0fn_40dbf0:
    0040dbf0push r14
    0040dbf2push r13
    0040dbf4push rdi
    0040dbf5push rsi
    0040dbf6push rbx
    0040dbf7sub rsp, 32
    0040dbfbmov rbx, rdx
    0040dbfemov rax, rcx
    0040dc01mov rdx, rbx
    0040dc04cmp rax, rdx
    0040dc07jne 0x40dc0d
    0040dc09xor eax, eax
    0040dc0bjmp 0x40dc81
    0040dc0d
    0040dc0dloc_40dc0d:
    0040dc0dtest rax, rax
    0040dc10jne 0x40dc19
    0040dc12mov eax, [rdx-4]
    0040dc15neg eax
    0040dc17jmp 0x40dc81
    0040dc19
    0040dc19loc_40dc19:
    0040dc19test rdx, rdx
    0040dc1cjne 0x40dc23
    0040dc1emov eax, [rax-4]
    0040dc21jmp 0x40dc81
    0040dc23
    0040dc23loc_40dc23:
    0040dc23mov edi, [rax-4]
    0040dc26mov r13l, [rdx-4]
    0040dc2amov esi, edi
    0040dc2ccmp esi, r13l
    0040dc2fjle 0x40dc34
    0040dc31mov esi, r13l
    0040dc34
    0040dc34loc_40dc34:
    0040dc34call fn_40d710
    0040dc39mov r14, rax
    0040dc3cmov rcx, rbx
    0040dc3fcall fn_40d710
    0040dc44mov rcx, rax
    0040dc47test esi, esi
    0040dc49jle 0x40dc7b
    0040dc4b
    0040dc4bloc_40dc4b:
    0040dc4bmovzx eax, [r14]
    0040dc4fmovzx edx, [rcx]
    0040dc52sub eax, edx
    0040dc54test eax, eax
    0040dc56jne 0x40dc81
    0040dc58cmp esi, 1
    0040dc5bje 0x40dc7b
    0040dc5dmovzx eax, [r14+2]
    0040dc62movzx edx, [rcx+2]
    0040dc66sub eax, edx
    0040dc68test eax, eax
    0040dc6ajne 0x40dc81
    0040dc6cadd r14, 4
    0040dc70add rcx, 4
    0040dc74sub esi, 2
    0040dc77test esi, esi
    0040dc79jg 0x40dc4b
    0040dc7b
    0040dc7bloc_40dc7b:
    0040dc7bnop
    0040dc7cmov eax, edi
    0040dc7esub eax, r13l
    0040dc81
    0040dc81loc_40dc81:
    0040dc81add rsp, 32
    0040dc85pop rbx
    0040dc86pop rsi
    0040dc87pop rdi
    0040dc88pop r13
    0040dc8apop r14
    0040dc8cret
    0040dbf0
    0040dc8d
    0040dc8d // align 0x10
    0040dc90
    0040dc90fn_40dc90:
    0040dc90sub rsp, 40
    0040dc94call fn_40dbf0
    0040dc99add rsp, 40
    0040dc9dret
    0040dc90
    0040dc9e
    0040dc9e // align 0x10
    0040dca0
    0040dca0fn_40dca0:
    0040dca0push rbx
    0040dca1sub rsp, 32
    0040dca5mov rbx, rcx
    0040dca8mov eax, r8l
    0040dcabxor ecx, ecx
    0040dcadtest rdx, rdx
    0040dcb0je 0x40dcb5
    0040dcb2mov ecx, [rdx-4]
    0040dcb5
    0040dcb5loc_40dcb5:
    0040dcb5cmp eax, 1
    0040dcb8jge 0x40dcbe
    0040dcbaxor eax, eax
    0040dcbcjmp 0x40dcc7
    0040dcbe
    0040dcbeloc_40dcbe:
    0040dcbesub eax, 1
    0040dcc1cmp eax, ecx
    0040dcc3jle 0x40dcc7
    0040dcc5mov eax, ecx
    0040dcc7
    0040dcc7loc_40dcc7:
    0040dcc7test r9l, r9l
    0040dccajge 0x40dcd0
    0040dcccxor ecx, ecx
    0040dccejmp 0x40dcda
    0040dcd0
    0040dcd0loc_40dcd0:
    0040dcd0sub ecx, eax
    0040dcd2cmp ecx, r9l
    0040dcd5jle 0x40dcda
    0040dcd7mov ecx, r9l
    0040dcda
    0040dcdaloc_40dcda:
    0040dcdamov r8, rbx
    0040dcddmovsxd rax, eax
    0040dce0lea rdx, [rdx+2*rax]
    0040dce4mov eax, ecx
    0040dce6mov rcx, r8
    0040dce9mov r8l, eax
    0040dceccall fn_40bfd0
    0040dcf1mov rax, rbx
    0040dcf4add rsp, 32
    0040dcf8pop rbx
    0040dcf9ret
    0040dca0
    0040dcfa
    0040dcfa // align 0x10
    0040dd00
    0040dd00fn_40dd00:
    0040dd00push rdi
    0040dd01push rsi
    0040dd02push rbx
    0040dd03sub rsp, 32
    0040dd07mov rbx, rcx
    0040dd0amov esi, edx
    0040dd0cmov edi, r8l
    0040dd0fmov rcx, rbx
    0040dd12call fn_40c5c0
    0040dd17xor eax, eax
    0040dd19mov rcx, [rbx]
    0040dd1ctest rcx, rcx
    0040dd1fje 0x40dd24
    0040dd21mov eax, [rcx-4]
    0040dd24
    0040dd24loc_40dd24:
    0040dd24cmp esi, 1
    0040dd27jl 0x40dd72
    0040dd29cmp esi, eax
    0040dd2bjg 0x40dd72
    0040dd2dtest edi, edi
    0040dd2fjle 0x40dd72
    0040dd31sub esi, 1
    0040dd34mov ecx, eax
    0040dd36sub ecx, esi
    0040dd38sub ecx, edi
    0040dd3amov edi, ecx
    0040dd3ctest edi, edi
    0040dd3ejge 0x40dd42
    0040dd40xor edi, edi
    0040dd42
    0040dd42loc_40dd42:
    0040dd42mov rcx, [rbx]
    0040dd45sub eax, edi
    0040dd47movsxd rax, eax
    0040dd4alea rcx, [rcx+2*rax]
    0040dd4emov rax, [rbx]
    0040dd51movsxd rdx, esi
    0040dd54lea rdx, [rax+2*rdx]
    0040dd58mov r8l, edi
    0040dd5badd r8l, r8l
    0040dd5emovsxd r8, r8l
    0040dd61call fn_405ac0
    0040dd66mov rcx, rbx
    0040dd69mov edx, esi
    0040dd6badd edx, edi
    0040dd6dcall fn_40d8d0
    0040dd72
    0040dd72loc_40dd72:
    0040dd72add rsp, 32
    0040dd76pop rbx
    0040dd77pop rsi
    0040dd78pop rdi
    0040dd79ret
    0040dd00
    0040dd7a
    0040dd7a // align 0x10
    0040dd80
    0040dd80fn_40dd80:
    0040dd80push rbx
    0040dd81test rdx, rdx
    0040dd84je 0x40de81
    0040dd8atest rcx, rcx
    0040dd8dje 0x40de81
    0040dd93cmp r8l, 1
    0040dd97jl 0x40de81
    0040dd9dmovsxd r9, [rcx-4]
    0040dda1sub r9, 1
    0040dda5movsxd rax, [rdx-4]
    0040dda9movsxd r10, r8l
    0040ddaclea r10, [r9+r10]
    0040ddb0cmp rax, r10
    0040ddb3jl 0x40de81
    0040ddb9lea r11, [rdx+2*rax]
    0040ddbdmov rax, r9
    0040ddc0add rax, rax
    0040ddc3add rdx, rax
    0040ddc6mov rax, r9
    0040ddc9add rax, rax
    0040ddccadd rcx, rax
    0040ddcfmov r10, rdx
    0040ddd2add r8l, 3
    0040ddd6movsxd r8, r8l
    0040ddd9add r8, r8
    0040dddcadd rdx, r8
    0040dddfmovzx r8, [rcx]
    0040dde3neg r9
    0040dde6cmp rdx, r11
    0040dde9jae 0x40de1d
    0040ddeb
    0040ddebloc_40ddeb:
    0040ddebcmp r8w, [rdx-8]
    0040ddf0je 0x40de53
    0040ddf2cmp r8w, [rdx-6]
    0040ddf7je 0x40de29
    0040ddf9cmp r8w, [rdx-4]
    0040ddfeje 0x40de57
    0040de00cmp r8w, [rdx-2]
    0040de05je 0x40de2d
    0040de07
    0040de07loc_40de07:
    0040de07cmp r8w, [rdx]
    0040de0bje 0x40de5b
    0040de0d
    0040de0dloc_40de0d:
    0040de0dcmp r8w, [rdx+2]
    0040de12je 0x40de31
    0040de14
    0040de14loc_40de14:
    0040de14add rdx, 12
    0040de18cmp rdx, r11
    0040de1bjb 0x40ddeb
    0040de1d
    0040de1dloc_40de1d:
    0040de1dnop
    0040de1esub rdx, 8
    0040de22cmp rdx, r11
    0040de25jb 0x40de07
    0040de27jmp 0x40de81
    0040de29
    0040de29loc_40de29:
    0040de29sub rdx, 4
    0040de2d
    0040de2dloc_40de2d:
    0040de2dsub rdx, 4
    0040de31
    0040de31loc_40de31:
    0040de31mov rax, r9
    0040de34jmp 0x40de43
    0040de36
    0040de36loc_40de36:
    0040de36mov ebx, [rcx+2*rax]
    0040de39cmp ebx, [rdx+2*rax+2]
    0040de3djne 0x40de14
    0040de3fadd rax, 2
    0040de43
    0040de43loc_40de43:
    0040de43test rax, rax
    0040de46jl 0x40de36
    0040de48add rdx, 4
    0040de4ccmp rdx, r11
    0040de4fjbe 0x40de75
    0040de51jmp 0x40de81
    0040de53
    0040de53loc_40de53:
    0040de53sub rdx, 4
    0040de57
    0040de57loc_40de57:
    0040de57sub rdx, 4
    0040de5b
    0040de5bloc_40de5b:
    0040de5bmov rax, r9
    0040de5ejmp 0x40de6c
    0040de60
    0040de60loc_40de60:
    0040de60mov ebx, [rcx+2*rax]
    0040de63cmp ebx, [rdx+2*rax]
    0040de66jne 0x40de0d
    0040de68add rax, 2
    0040de6c
    0040de6cloc_40de6c:
    0040de6ctest rax, rax
    0040de6fjl 0x40de60
    0040de71add rdx, 2
    0040de75
    0040de75loc_40de75:
    0040de75mov rax, rdx
    0040de78sub rax, r10
    0040de7bshr rax, 1
    0040de7fjmp 0x40de83
    0040de81
    0040de81loc_40de81:
    0040de81xor eax, eax
    0040de83
    0040de83loc_40de83:
    0040de83pop rbx
    0040de84ret
    0040dd80
    0040de85
    0040de85 // align 0x10
    0040de90
    0040de90fn_40de90:
    0040de90push rbx
    0040de91test rdx, rdx
    0040de94je 0x40df9d
    0040de9atest rcx, rcx
    0040de9dje 0x40df9d
    0040dea3cmp r8l, 1
    0040dea7jl 0x40df9d
    0040deadmov r9l, [rcx-4]
    0040deb1shr r9l, 1
    0040deb5movsxd r9, r9l
    0040deb8sub r9, 1
    0040debcmov eax, [rdx-4]
    0040debfshr eax, 1
    0040dec2movsxd rax, eax
    0040dec5movsxd r10, r8l
    0040dec8lea r10, [r9+r10]
    0040decccmp rax, r10
    0040decfjl 0x40df9d
    0040ded5lea r11, [rdx+2*rax]
    0040ded9mov rax, r9
    0040dedcadd rax, rax
    0040dedfadd rdx, rax
    0040dee2mov rax, r9
    0040dee5add rax, rax
    0040dee8add rcx, rax
    0040deebmov r10, rdx
    0040deeeadd r8l, 3
    0040def2movsxd r8, r8l
    0040def5add r8, r8
    0040def8add rdx, r8
    0040defbmovzx r8, [rcx]
    0040deffneg r9
    0040df02cmp rdx, r11
    0040df05jae 0x40df39
    0040df07
    0040df07loc_40df07:
    0040df07cmp r8w, [rdx-8]
    0040df0cje 0x40df6f
    0040df0ecmp r8w, [rdx-6]
    0040df13je 0x40df45
    0040df15cmp r8w, [rdx-4]
    0040df1aje 0x40df73
    0040df1ccmp r8w, [rdx-2]
    0040df21je 0x40df49
    0040df23
    0040df23loc_40df23:
    0040df23cmp r8w, [rdx]
    0040df27je 0x40df77
    0040df29
    0040df29loc_40df29:
    0040df29cmp r8w, [rdx+2]
    0040df2eje 0x40df4d
    0040df30
    0040df30loc_40df30:
    0040df30add rdx, 12
    0040df34cmp rdx, r11
    0040df37jb 0x40df07
    0040df39
    0040df39loc_40df39:
    0040df39nop
    0040df3asub rdx, 8
    0040df3ecmp rdx, r11
    0040df41jb 0x40df23
    0040df43jmp 0x40df9d
    0040df45
    0040df45loc_40df45:
    0040df45sub rdx, 4
    0040df49
    0040df49loc_40df49:
    0040df49sub rdx, 4
    0040df4d
    0040df4dloc_40df4d:
    0040df4dmov rax, r9
    0040df50jmp 0x40df5f
    0040df52
    0040df52loc_40df52:
    0040df52mov ebx, [rcx+2*rax]
    0040df55cmp ebx, [rdx+2*rax+2]
    0040df59jne 0x40df30
    0040df5badd rax, 2
    0040df5f
    0040df5floc_40df5f:
    0040df5ftest rax, rax
    0040df62jl 0x40df52
    0040df64add rdx, 4
    0040df68cmp rdx, r11
    0040df6bjbe 0x40df91
    0040df6djmp 0x40df9d
    0040df6f
    0040df6floc_40df6f:
    0040df6fsub rdx, 4
    0040df73
    0040df73loc_40df73:
    0040df73sub rdx, 4
    0040df77
    0040df77loc_40df77:
    0040df77mov rax, r9
    0040df7ajmp 0x40df88
    0040df7c
    0040df7cloc_40df7c:
    0040df7cmov ebx, [rcx+2*rax]
    0040df7fcmp ebx, [rdx+2*rax]
    0040df82jne 0x40df29
    0040df84add rax, 2
    0040df88
    0040df88loc_40df88:
    0040df88test rax, rax
    0040df8bjl 0x40df7c
    0040df8dadd rdx, 2
    0040df91
    0040df91loc_40df91:
    0040df91mov rax, rdx
    0040df94sub rax, r10
    0040df97shr rax, 1
    0040df9bjmp 0x40df9f
    0040df9d
    0040df9dloc_40df9d:
    0040df9dxor eax, eax
    0040df9f
    0040df9floc_40df9f:
    0040df9fpop rbx
    0040dfa0ret
    0040de90
    0040dfa1
    0040dfa1 // align 0x10
    0040dfb0
    0040dfb0fn_40dfb0:
    0040dfb0push rbp
    0040dfb1push r13
    0040dfb3push rdi
    0040dfb4push rsi
    0040dfb5push rbx
    0040dfb6sub rsp, 80
    0040dfbamov rbp, rsp
    0040dfbdmov [rbp+48], rcx
    0040dfc1mov [rbp+56], dx
    0040dfc5mov [rbp+59], r8b
    0040dfc9mov [rbp+72], 0
    0040dfd1nop
    0040dfd2mov rax, [rbp+48]
    0040dfd6cmp [rax], 0
    0040dfdaje 0x40dfea
    0040dfdcmov rax, [rbp+48]
    0040dfe0mov rax, [rax]
    0040dfe3movzx rax, [rax-12]
    0040dfe8jmp 0x40dff2
    0040dfea
    0040dfealoc_40dfea:
    0040dfeamovzx rax, [rip+0x57a26]
    0040dff2
    0040dff2loc_40dff2:
    0040dff2movzx rcx, [rbp+56]
    0040dff7cmp ax, cx
    0040dffajne 0x40e000
    0040dffcmov al, 1
    0040dffejmp 0x40e016
    0040e000
    0040e000loc_40e000:
    0040e000xor eax, eax
    0040e002mov rcx, [rbp+48]
    0040e006mov rcx, [rcx]
    0040e009test rcx, rcx
    0040e00cje 0x40e011
    0040e00emov eax, [rcx-4]
    0040e011
    0040e011loc_40e011:
    0040e011test eax, eax
    0040e013sete al
    0040e016
    0040e016loc_40e016:
    0040e016test al, al
    0040e018jne 0x40e127
    0040e01emovzx rax, [rbp+59]
    0040e023test al, al
    0040e025je 0x40e0ff
    0040e02bmov rax, [rbp+48]
    0040e02fcmp [rax], 0
    0040e033je 0x40e043
    0040e035mov rax, [rbp+48]
    0040e039mov rax, [rax]
    0040e03cmovzx rax, [rax-10]
    0040e041jmp 0x40e047
    0040e043
    0040e043loc_40e043:
    0040e043mov ax, 1
    0040e047
    0040e047loc_40e047:
    0040e047cmp ax, 1
    0040e04bjne 0x40e05f
    0040e04dlea rcx, [rbp+72]
    0040e051mov rax, [rbp+48]
    0040e055mov rdx, [rax]
    0040e058call fn_40d7f0
    0040e05djmp 0x40e06f
    0040e05f
    0040e05floc_40e05f:
    0040e05flea rcx, [rbp+72]
    0040e063mov rax, [rbp+48]
    0040e067mov rdx, [rax]
    0040e06acall fn_40c3e0
    0040e06f
    0040e06floc_40e06f:
    0040e06fxor ebx, ebx
    0040e071mov rsi, [rbp+72]
    0040e075test rsi, rsi
    0040e078je 0x40e07d
    0040e07amov ebx, [rsi-4]
    0040e07d
    0040e07dloc_40e07d:
    0040e07dmov rcx, [rbp+72]
    0040e081call fn_40d710
    0040e086mov rdi, rax
    0040e089movzx r13, [rbp+56]
    0040e08emovzx r13l, r13w
    0040e092xor ecx, ecx
    0040e094xor edx, edx
    0040e096mov r8, rdi
    0040e099mov r9l, ebx
    0040e09cmov [rsp+32], r13l
    0040e0a1call fn_40bf50
    0040e0a6mov ebx, eax
    0040e0a8mov rcx, [rbp+48]
    0040e0acmov edx, ebx
    0040e0aexor r8, r8
    0040e0b1call fn_40cf30
    0040e0b6test ebx, ebx
    0040e0b8jle 0x40e108
    0040e0baxor eax, eax
    0040e0bcmov [rbp+60], eax
    0040e0bfmov rax, [rbp+48]
    0040e0c3mov rax, [rax]
    0040e0c6test rax, rax
    0040e0c9je 0x40e0d1
    0040e0cbmov eax, [rax-4]
    0040e0cemov [rbp+60], eax
    0040e0d1
    0040e0d1loc_40e0d1:
    0040e0d1xor ebx, ebx
    0040e0d3test rsi, rsi
    0040e0d6je 0x40e0db
    0040e0d8mov ebx, [rsi-4]
    0040e0db
    0040e0dbloc_40e0db:
    0040e0dbmov rax, [rbp+48]
    0040e0dfmov rcx, [rax]
    0040e0e2call fn_40ce10
    0040e0e7mov rcx, rax
    0040e0eamov edx, [rbp+60]
    0040e0edmov r8, rdi
    0040e0f0mov r9l, ebx
    0040e0f3mov [rsp+32], r13l
    0040e0f8call fn_40bf50
    0040e0fdjmp 0x40e108
    0040e0ff
    0040e0ffloc_40e0ff:
    0040e0ffmov rcx, [rbp+48]
    0040e103call fn_40c620
    0040e108
    0040e108loc_40e108:
    0040e108xor eax, eax
    0040e10amov rcx, [rbp+48]
    0040e10emov rcx, [rcx]
    0040e111test rcx, rcx
    0040e114je 0x40e119
    0040e116mov eax, [rcx-4]
    0040e119
    0040e119loc_40e119:
    0040e119test eax, eax
    0040e11bjle 0x40e126
    0040e11dmovzx rax, [rbp+56]
    0040e122mov [rcx-12], ax
    0040e126
    0040e126loc_40e126:
    0040e126nop
    0040e127
    0040e127loc_40e127:
    0040e127lea rcx, [rbp+72]
    0040e12bcall fn_40bcf0
    0040e130lea rsp, [rbp+80]
    0040e134pop rbx
    0040e135pop rsi
    0040e136pop rdi
    0040e137pop r13
    0040e139pop rbp
    0040e13aret
    0040dfb0
    0040e13b
    0040e13b 48 8d 44 20 00 H.D .
    0040e140
    0040e140fn_40e140:
    0040e140push rbp
    0040e141sub rsp, 32
    0040e145mov rbp, rsp
    0040e148lea rcx, [rdx+72]
    0040e14ccall fn_40bcf0
    0040e151lea rsp, [rbp+32]
    0040e155pop rbp
    0040e156ret
    0040e140
    0040e157
    0040e157 // align 0x10
    0040e160
    0040e160fn_40e160:
    0040e160push rbp
    0040e161push rbx
    0040e162sub rsp, 88
    0040e166mov rbp, rsp
    0040e169mov [rbp+40], rbp
    0040e16dmov [rbp+112], rcx
    0040e171mov [rbp+120], rdx
    0040e175mov rax, [rbp+120]
    0040e179movzx rcx, [rax+1]
    0040e17elea rcx, [rax+rcx]
    0040e182mov [rbp+64], rcx
    0040e186cmp [rax], 22
    0040e189jne 0x40e1c8
    0040e18bmov rax, [rbp+64]
    0040e18fmov rcx, [rbp+64]
    0040e193mov ecx, [rcx+6]
    0040e196shl ecx, 4
    0040e199mov ecx, ecx
    0040e19blea rax, [rax+rcx+10]
    0040e1a0mov [rbp+48], rax
    0040e1a4mov rax, [rbp+48]
    0040e1a8cmp [rax], 1
    0040e1abjbe 0x40e1c8
    0040e1admov rax, [rbp+48]
    0040e1b1cmp [rax+9], 0
    0040e1b6je 0x40e1c8
    0040e1b8mov rcx, [rbp+112]
    0040e1bcmov rbx, [rbp+48]
    0040e1c0call [rbx+9]
    0040e1c3jmp 0x40e2a7
    0040e1c8
    0040e1c8loc_40e1c8:
    0040e1c8mov rax, [rbp+64]
    0040e1cccmp [rax+6], 0
    0040e1d0jbe 0x40e2a7
    0040e1d6mov [rbp+76], 0
    0040e1ddmov [rbp+72], 0
    0040e1e4nop
    0040e1e5jmp 0x40e239
    0040e1e7
    0040e1e7loc_40e1e7:
    0040e1e7mov eax, [rbp+76]
    0040e1eamov rcx, [rbp+64]
    0040e1eemov rdx, rax
    0040e1f1add rdx, rdx
    0040e1f4cmp [rcx+8*rdx+10], 0
    0040e1fajne 0x40e204
    0040e1fcmov eax, [rbp+76]
    0040e1ffmov [rbp+72], eax
    0040e202jmp 0x40e235
    0040e204
    0040e204loc_40e204:
    0040e204mov rcx, [rbp+112]
    0040e208mov rdx, [rbp+64]
    0040e20cmov r8, rax
    0040e20fadd r8, r8
    0040e212mov edx, [rdx+8*r8+18]
    0040e217lea rcx, [rcx+rdx]
    0040e21bmov rdx, [rbp+64]
    0040e21fadd rax, rax
    0040e222mov rax, [rdx+8*rax+10]
    0040e227mov rdx, [rax]
    0040e22amov r8l, 1
    0040e230call fn_40e2c0
    0040e235
    0040e235loc_40e235:
    0040e235add [rbp+76], 1
    0040e239
    0040e239loc_40e239:
    0040e239mov rax, [rbp+64]
    0040e23dmov ecx, [rbp+76]
    0040e240cmp ecx, [rax+6]
    0040e243jb 0x40e1e7
    0040e245jmp 0x40e2a7
    0040e247
    0040e247 90 90 8b 45 4c 3b 45 48 76 ...EL;EHv
    0040e250 06 8b 45 48 89 45 4c 83 7d 4c 00 76 3e 83 6d 4c ..EH.EL.}L.v>.mL
    0040e260 01 8b 45 4c 48 8b 4d 70 48 8b 55 40 4c 8b c0 4d ..ELH.MpH.U@L..M
    0040e270 03 c0 42 8b 54 c2 12 48 8d 0c 11 48 8b 55 40 48 ..B.T..H...H.U@H
    0040e280 03 c0 48 8b 44 c2 0a 48 8b 10 41 b8 01 00 00 00 ..H.D..H..A.....
    0040e290 e8 ab 09 00 00 83 7d 4c 00 77 c2 90 e8 6f cd ff ......}L.w...o..
    0040e2a0 ff e8 7a ce ff ff 90 ..z....
    0040e2a7
    0040e2a7loc_40e2a7:
    0040e2a7lea rsp, [rbp+88]
    0040e2abpop rbx
    0040e2acpop rbp
    0040e2adret
    0040e160
    0040e2ae
    0040e2ae 48 90 H.
    0040e2b0
    0040e2b0fn_40e2b0:
    0040e2b0sub rsp, 40
    0040e2b4call fn_40b050
    0040e2b9add rsp, 40
    0040e2bdret
    0040e2b0
    0040e2be
    0040e2be // align 0x10
    0040e2c0
    0040e2c0fn_40e2c0:
    0040e2c0push rbp
    0040e2c1sub rsp, 80
    0040e2c5mov rbp, rsp
    0040e2c8mov [rbp+40], rbp
    0040e2ccmov [rbp+96], rcx
    0040e2d0mov [rbp+104], rdx
    0040e2d4mov [rbp+112], r8
    0040e2d8cmp [rbp+112], 0
    0040e2ddje 0x40e4c0
    0040e2e3mov rax, [rbp+104]
    0040e2e7movzx rcx, [rax]
    0040e2ebcmp ecx, 14
    0040e2eejg 0x40e315
    0040e2f0cmp ecx, 14
    0040e2f3je 0x40e438
    0040e2f9sub ecx, 10
    0040e2fccmp ecx, 2
    0040e2ffjb 0x40e349
    0040e301sub ecx, 2
    0040e304test ecx, ecx
    0040e306je 0x40e387
    0040e308sub ecx, 1
    0040e30btest ecx, ecx
    0040e30djne 0x40e4b9
    0040e313jmp 0x40e393
    0040e315
    0040e315loc_40e315:
    0040e315sub ecx, 15
    0040e318test ecx, ecx
    0040e31aje 0x40e349
    0040e31csub ecx, 2
    0040e31fcmp ecx, 2
    0040e322jb 0x40e349
    0040e324sub ecx, 5
    0040e327test ecx, ecx
    0040e329jne 0x40e4b9
    0040e32fjmp 0x40e438
    0040e334
    0040e334loc_40e334:
    0040e334mov rax, [rbp+96]
    0040e338mov [rax], 0
    0040e33fadd [rbp+96], 8
    0040e344sub [rbp+112], 1
    0040e349
    0040e349loc_40e349:
    0040e349cmp [rbp+112], 0
    0040e34eja 0x40e334
    0040e350jmp 0x40e4c0
    0040e355
    0040e355loc_40e355:
    0040e355mov rax, [rbp+96]
    0040e359mov [rbp+48], rax
    0040e35dmov [rbp+60], 0
    0040e364
    0040e364loc_40e364:
    0040e364mov rax, [rbp+48]
    0040e368mov ecx, [rbp+60]
    0040e36bmov [rax+4*rcx], 0
    0040e372add [rbp+60], 1
    0040e376cmp [rbp+60], 6
    0040e37ajne 0x40e364
    0040e37cnop
    0040e37dadd [rbp+96], 24
    0040e382sub [rbp+112], 1
    0040e387
    0040e387loc_40e387:
    0040e387cmp [rbp+112], 0
    0040e38cja 0x40e355
    0040e38ejmp 0x40e4c0
    0040e393
    0040e393loc_40e393:
    0040e393movzx rcx, [rax+1]
    0040e398lea rax, [rax+rcx]
    0040e39cmov [rbp+64], rax
    0040e3a0mov [rbp+72], 0
    0040e3a8nop
    0040e3a9jmp 0x40e3d7
    0040e3ab
    0040e3abloc_40e3ab:
    0040e3abmov rcx, [rbp+96]
    0040e3afmov rax, [rbp+64]
    0040e3b3mov rax, [rax+10]
    0040e3b7mov rdx, [rax]
    0040e3bamov rax, [rbp+64]
    0040e3bemov r8l, [rax+6]
    0040e3c2call fn_40e2c0
    0040e3c7mov rax, [rbp+64]
    0040e3cbmov eax, [rax+2]
    0040e3ceadd [rbp+96], rax
    0040e3d2add [rbp+72], 1
    0040e3d7
    0040e3d7loc_40e3d7:
    0040e3d7mov rax, [rbp+72]
    0040e3dbcmp rax, [rbp+112]
    0040e3dfjb 0x40e3ab
    0040e3e1jmp 0x40e4c0
    0040e3e6
    0040e3e6 90 90 eb 37 48 83 6d 48 01 48 ...7H.mH.H
    0040e3f0 8b 45 40 8b 40 02 48 29 45 60 90 48 8b 4d 60 48 .E@.@.H)E`.H.M`H
    0040e400 8b 45 40 48 8b 40 0a 48 8b 10 48 8b 45 40 44 8b .E@H.@.H..H.E@D.
    0040e410 40 06 e8 29 08 00 00 eb 08 90 90 e8 00 cd ff ff @..)............
    0040e420 90 48 83 7d 48 00 77 c2 e8 e3 cb ff ff e8 ee cc .H.}H.w.........
    0040e430 ff ff 90 e9 88 00 00 00 ........
    0040e438
    0040e438loc_40e438:
    0040e438movzx rcx, [rax+1]
    0040e43dlea rax, [rax+rcx]
    0040e441mov [rbp+64], rax
    0040e445mov [rbp+72], 0
    0040e44dnop
    0040e44ejmp 0x40e46d
    0040e450
    0040e450loc_40e450:
    0040e450mov rcx, [rbp+96]
    0040e454mov rdx, [rbp+104]
    0040e458call fn_40e160
    0040e45dmov rax, [rbp+64]
    0040e461mov eax, [rax+2]
    0040e464add [rbp+96], rax
    0040e468add [rbp+72], 1
    0040e46d
    0040e46dloc_40e46d:
    0040e46dmov rax, [rbp+72]
    0040e471cmp rax, [rbp+112]
    0040e475jb 0x40e450
    0040e477jmp 0x40e4c0
    0040e479
    0040e479 90 90 eb 28 48 83 6d ...(H.m
    0040e480 48 01 48 8b 45 40 8b 40 02 48 29 45 60 90 48 8b H.H.E@.@.H)E`.H.
    0040e490 4d 60 48 8b 55 68 e8 95 01 00 00 eb 08 90 90 e8 M`H.Uh..........
    0040e4a0 7c cc ff ff 90 48 83 7d 48 00 77 d1 e8 5f cb ff |....H.}H.w.._..
    0040e4b0 ff e8 6a cc ff ff 90 eb 07 ..j......
    0040e4b9
    0040e4b9loc_40e4b9:
    0040e4b9mov cl, 2
    0040e4bbcall fn_405a20
    0040e4c0
    0040e4c0loc_40e4c0:
    0040e4c0lea rsp, [rbp+80]
    0040e4c4pop rbp
    0040e4c5ret
    0040e2c0
    0040e4c6
    0040e4c6 48 90 48 8d 04 05 00 00 00 00 H.H.......
    0040e4d0
    0040e4d0fn_40e4d0:
    0040e4d0sub rsp, 40
    0040e4d4call fn_40b050
    0040e4d9add rsp, 40
    0040e4ddret
    0040e4d0
    0040e4de
    0040e4de 48 90 H.
    0040e4e0
    0040e4e0fn_40e4e0:
    0040e4e0sub rsp, 40
    0040e4e4call fn_40b050
    0040e4e9add rsp, 40
    0040e4edret
    0040e4e0
    0040e4ee
    0040e4ee 48 90 H.
    0040e4f0
    0040e4f0fn_40e4f0:
    0040e4f0sub rsp, 40
    0040e4f4call fn_40b050
    0040e4f9add rsp, 40
    0040e4fdret
    0040e4f0
    0040e4fe
    0040e4fe 48 90 H.
    0040e500
    0040e500fn_40e500:
    0040e500sub rsp, 40
    0040e504call fn_40b050
    0040e509add rsp, 40
    0040e50dret
    0040e500
    0040e50e
    0040e50e // align 0x10
    0040e510
    0040e510fn_40e510:
    0040e510sub rsp, 40
    0040e514mov r8l, 1
    0040e51acall fn_40e2c0
    0040e51fadd rsp, 40
    0040e523ret
    0040e510
    0040e524
    0040e524 // align 0x10
    0040e530
    0040e530fn_40e530:
    0040e530push rdi
    0040e531push rsi
    0040e532push rbx
    0040e533sub rsp, 32
    0040e537mov rax, rcx
    0040e53axor ecx, ecx
    0040e53cjmp 0x40e54e
    0040e53e
    0040e53eloc_40e53e:
    0040e53emovzx rax, [rdx+1]
    0040e543lea rbx, [rdx+rax]
    0040e547mov rax, [rbx+10]
    0040e54bmov rax, [rax]
    0040e54e
    0040e54eloc_40e54e:
    0040e54emov rdx, rax
    0040e551cmp [rdx], 13
    0040e554je 0x40e53e
    0040e556mov rdx, rax
    0040e559cmp [rdx], 22
    0040e55cjne 0x40e586
    0040e55emovzx rcx, [rdx+1]
    0040e563lea rbx, [rdx+rcx]
    0040e567mov ecx, [rbx+6]
    0040e56ashl ecx, 4
    0040e56dmov ecx, ecx
    0040e56flea rcx, [rbx+rcx+10]
    0040e574cmp [rcx], 1
    0040e577jbe 0x40e580
    0040e579cmp [rcx+9], 0
    0040e57ejne 0x40e584
    0040e580
    0040e580loc_40e580:
    0040e580xor ecx, ecx
    0040e582jmp 0x40e586
    0040e584
    0040e584loc_40e584:
    0040e584mov cl, 1
    0040e586
    0040e586loc_40e586:
    0040e586test cl, cl
    0040e588jne 0x40e5eb
    0040e58amovzx rdx, [rax]
    0040e58ecmp dl, 14
    0040e591je 0x40e598
    0040e593cmp dl, 22
    0040e596jne 0x40e5eb
    0040e598
    0040e598loc_40e598:
    0040e598movzx rdx, [rax+1]
    0040e59dlea rbx, [rax+rdx]
    0040e5a1mov eax, [rbx+6]
    0040e5a4test eax, eax
    0040e5a6jbe 0x40e5eb
    0040e5a8xor edx, edx
    0040e5aamov edi, eax
    0040e5acsub edi, 1
    0040e5afmov esi, edx
    0040e5b1cmp esi, edi
    0040e5b3ja 0x40e5ea
    0040e5b5sub edi, edx
    0040e5b7add edi, 1
    0040e5ba
    0040e5baloc_40e5ba:
    0040e5bamov eax, esi
    0040e5bcmov rdx, rax
    0040e5bfadd rdx, rdx
    0040e5c2cmp [rbx+8*rdx+10], 0
    0040e5c8je 0x40e5e0
    0040e5caadd rax, rax
    0040e5cdmov rax, [rbx+8*rax+10]
    0040e5d2mov rcx, [rax]
    0040e5d5call fn_40e530
    0040e5damov ecx, eax
    0040e5dctest cl, cl
    0040e5dejne 0x40e5ea
    0040e5e0
    0040e5e0loc_40e5e0:
    0040e5e0add esi, 1
    0040e5e3sub edi, 1
    0040e5e6test edi, edi
    0040e5e8jne 0x40e5ba
    0040e5ea
    0040e5ealoc_40e5ea:
    0040e5eanop
    0040e5eb
    0040e5ebloc_40e5eb:
    0040e5ebmov eax, ecx
    0040e5edadd rsp, 32
    0040e5f1pop rbx
    0040e5f2pop rsi
    0040e5f3pop rdi
    0040e5f4ret
    0040e530
    0040e5f5
    0040e5f5 // align 0x10
    0040e600
    0040e600fn_40e600:
    0040e600sub rsp, 40
    0040e604cmp [rip+0x4aa0c], 0
    0040e60cje 0x40e616
    0040e60ecall [rip+0x4aa04]
    0040e614jmp 0x40e61d
    0040e616
    0040e616loc_40e616:
    0040e616mov cl, 16
    0040e618call fn_405a20
    0040e61d
    0040e61dloc_40e61d:
    0040e61dadd rsp, 40
    0040e621ret
    0040e600
    0040e622
    0040e622 // align 0x10
    0040e630
    0040e630fn_40e630:
    0040e630push rbp
    0040e631push rbx
    0040e632sub rsp, 152
    0040e639mov rbp, rsp
    0040e63cmov [rbp+40], rbp
    0040e640mov [rbp+176], rcx
    0040e647mov [rbp+184], rdx
    0040e64emov rax, [rbp+184]
    0040e655movzx rcx, [rax+1]
    0040e65alea rcx, [rax+rcx]
    0040e65emov [rbp+128], rcx
    0040e665mov rcx, [rbp+128]
    0040e66cmov rdx, [rbp+128]
    0040e673mov edx, [rdx+6]
    0040e676shl edx, 4
    0040e679mov edx, edx
    0040e67blea rcx, [rcx+rdx+10]
    0040e680mov [rbp+48], rcx
    0040e684cmp [rax], 22
    0040e687jne 0x40e6d2
    0040e689mov rax, [rbp+48]
    0040e68dcmp [rax], 2
    0040e690jbe 0x40e6bb
    0040e692mov rax, [rbp+48]
    0040e696cmp [rax+17], 0
    0040e69bje 0x40e6bb
    0040e69dmov rcx, [rbp+176]
    0040e6a4mov rbx, [rbp+48]
    0040e6a8call [rbx+17]
    0040e6abmov rax, [rbp+176]
    0040e6b2mov [rbp+72], rax
    0040e6b6jmp 0x40ea9e
    0040e6bb
    0040e6bbloc_40e6bb:
    0040e6bbmov rax, [rbp+48]
    0040e6bfmov rax, [rax+1]
    0040e6c3test rax, 2
    0040e6casetne al
    0040e6cdmov [rbp+119], al
    0040e6d0jmp 0x40e6f5
    0040e6d2
    0040e6d2loc_40e6d2:
    0040e6d2mov rax, [rbp+48]
    0040e6d6cmp [rax], 0
    0040e6d9jbe 0x40e6ec
    0040e6dbmov rax, [rbp+48]
    0040e6dfmov rax, [rax+1]
    0040e6e3test rax, 2
    0040e6eajne 0x40e6f0
    0040e6ec
    0040e6ecloc_40e6ec:
    0040e6ecxor eax, eax
    0040e6eejmp 0x40e6f2
    0040e6f0
    0040e6f0loc_40e6f0:
    0040e6f0mov al, 1
    0040e6f2
    0040e6f2loc_40e6f2:
    0040e6f2mov [rbp+119], al
    0040e6f5
    0040e6f5loc_40e6f5:
    0040e6f5mov rax, [rbp+128]
    0040e6fcmov eax, [rax+6]
    0040e6fftest eax, eax
    0040e701jbe 0x40ea93
    0040e707mov eax, eax
    0040e709mov [rbp+120], rax
    0040e70dnop
    0040e70emov rax, [rbp+128]
    0040e715mov rcx, [rbp+120]
    0040e719add rcx, rcx
    0040e71clea rax, [rax+8*rcx+10]
    0040e721mov [rbp+56], rax
    0040e725cmp [rbp+119], 0
    0040e729je 0x40e8a4
    0040e72f
    0040e72floc_40e72f:
    0040e72fsub [rbp+56], 16
    0040e734sub [rbp+120], 1
    0040e739mov rax, [rbp+56]
    0040e73dmov rax, [rax]
    0040e740test rax, rax
    0040e743je 0x40e785
    0040e745mov rcx, [rbp+176]
    0040e74cmov rdx, [rbp+56]
    0040e750mov edx, [rdx+8]
    0040e753lea rcx, [rcx+rdx]
    0040e757mov [rbp+104], rcx
    0040e75bmov [rbp+96], rax
    0040e75fmov rax, [rbp+96]
    0040e763mov rax, [rax]
    0040e766movzx rax, [rax]
    0040e76asub al, 15
    0040e76dtest al, al
    0040e76fjne 0x40e77c
    0040e771mov rcx, [rbp+104]
    0040e775call fn_414150
    0040e77ajmp 0x40e72f
    0040e77c
    0040e77cloc_40e77c:
    0040e77cmov cl, 2
    0040e77ecall fn_405a20
    0040e783jmp 0x40e72f
    0040e785
    0040e785loc_40e785:
    0040e785nop
    0040e786mov [rbp+119], 0
    0040e78ajmp 0x40e8a4
    0040e78f
    0040e78floc_40e78f:
    0040e78fsub [rbp+56], 16
    0040e794sub [rbp+120], 1
    0040e799mov rax, [rbp+56]
    0040e79dmov rax, [rax]
    0040e7a0mov [rbp+96], rax
    0040e7a4mov rax, [rbp+176]
    0040e7abmov rcx, [rbp+56]
    0040e7afmov ecx, [rcx+8]
    0040e7b2lea rax, [rax+rcx]
    0040e7b6mov [rbp+104], rax
    0040e7bamov rax, [rbp+96]
    0040e7bemov rax, [rax]
    0040e7c1movzx rcx, [rax]
    0040e7c5cmp ecx, 14
    0040e7c8jg 0x40e7f5
    0040e7cacmp ecx, 14
    0040e7cdje 0x40e876
    0040e7d3sub ecx, 10
    0040e7d6test ecx, ecx
    0040e7d8je 0x40e81f
    0040e7dasub ecx, 1
    0040e7ddtest ecx, ecx
    0040e7dfje 0x40e82a
    0040e7e1sub ecx, 1
    0040e7e4test ecx, ecx
    0040e7e6je 0x40e840
    0040e7e8sub ecx, 1
    0040e7ebtest ecx, ecx
    0040e7edjne 0x40e89d
    0040e7f3jmp 0x40e84b
    0040e7f5
    0040e7f5loc_40e7f5:
    0040e7f5sub ecx, 15
    0040e7f8test ecx, ecx
    0040e7faje 0x40e884
    0040e800sub ecx, 2
    0040e803test ecx, ecx
    0040e805je 0x40e88f
    0040e80bsub ecx, 1
    0040e80etest ecx, ecx
    0040e810je 0x40e835
    0040e812sub ecx, 4
    0040e815test ecx, ecx
    0040e817jne 0x40e89d
    0040e81djmp 0x40e876
    0040e81f
    0040e81floc_40e81f:
    0040e81fmov rcx, [rbp+104]
    0040e823call fn_40bd40
    0040e828jmp 0x40e8a4
    0040e82a
    0040e82aloc_40e82a:
    0040e82amov rcx, [rbp+104]
    0040e82ecall fn_40bd90
    0040e833jmp 0x40e8a4
    0040e835
    0040e835loc_40e835:
    0040e835mov rcx, [rbp+104]
    0040e839call fn_40bcf0
    0040e83ejmp 0x40e8a4
    0040e840
    0040e840loc_40e840:
    0040e840mov rcx, [rbp+104]
    0040e844call fn_40e600
    0040e849jmp 0x40e8a4
    0040e84b
    0040e84bloc_40e84b:
    0040e84bmovzx rcx, [rax+1]
    0040e850lea rax, [rax+rcx]
    0040e854mov [rbp+64], rax
    0040e858mov rcx, [rbp+104]
    0040e85cmov rax, [rbp+64]
    0040e860mov rax, [rax+10]
    0040e864mov rdx, [rax]
    0040e867mov rax, [rbp+64]
    0040e86bmov r8l, [rax+6]
    0040e86fcall fn_40ec40
    0040e874jmp 0x40e8a4
    0040e876
    0040e876loc_40e876:
    0040e876mov rcx, [rbp+104]
    0040e87amov rdx, rax
    0040e87dcall fn_40e630
    0040e882jmp 0x40e8a4
    0040e884
    0040e884loc_40e884:
    0040e884mov rcx, [rbp+104]
    0040e888call fn_412500
    0040e88djmp 0x40e8a4
    0040e88f
    0040e88floc_40e88f:
    0040e88fmov rcx, [rbp+104]
    0040e893mov rdx, rax
    0040e896call fn_410600
    0040e89bjmp 0x40e8a4
    0040e89d
    0040e89dloc_40e89d:
    0040e89dmov cl, 2
    0040e89fcall fn_405a20
    0040e8a4
    0040e8a4loc_40e8a4:
    0040e8a4cmp [rbp+120], 0
    0040e8a9ja 0x40e78f
    0040e8afjmp 0x40ea93
    0040e8b4
    0040e8b4 90 90 48 8b 85 80 00 00 00 48 8b 4d ..H......H.M
    0040e8c0 78 48 03 c9 48 8d 44 c8 0a 48 89 85 88 00 00 00 xH..H.D..H......
    0040e8d0 80 7d 77 00 0f 84 a3 01 00 00 eb 63 48 83 ad 88 .}w........cH...
    0040e8e0 00 00 00 10 48 83 6d 78 01 90 48 8b 85 b0 00 00 ....H.mx..H.....
    0040e8f0 00 48 8b 8d 88 00 00 00 8b 49 08 48 8d 04 08 48 .H.......I.H...H
    0040e900 89 45 68 48 8b 85 88 00 00 00 48 8b 00 48 89 45 .EhH......H..H.E
    0040e910 60 48 8b 45 60 48 8b 00 48 0f b6 00 80 e8 0f 84 `H.E`H..H.......
    0040e920 c0 75 0b 48 8b 4d 68 e8 24 58 00 00 eb 11 b1 02 .u.H.Mh.$X......
    0040e930 e8 eb 70 ff ff eb 08 90 90 e8 e2 c7 ff ff 90 48 ..p............H
    0040e940 8b 85 88 00 00 00 48 83 38 00 75 90 e9 2c 01 00 ......H.8.u..,..
    0040e950 00 48 83 ad 88 00 00 00 10 48 83 6d 78 01 48 8b .H.......H.mx.H.
    0040e960 85 88 00 00 00 48 8b 00 48 89 45 60 90 48 8b 85 .....H..H.E`.H..
    0040e970 b0 00 00 00 48 8b 8d 88 00 00 00 8b 49 08 48 8d ....H.......I.H.
    0040e980 04 08 48 89 45 68 48 8b 45 60 48 8b 00 48 0f b6 ..H.EhH.E`H..H..
    0040e990 08 83 f9 0e 7f 2b 83 f9 0e 0f 84 a6 00 00 00 83 .....+..........
    0040e9a0 e9 0a 85 c9 74 45 83 e9 01 85 c9 74 4c 83 e9 01 ....tE.....tL...
    0040e9b0 85 c9 74 5b 83 e9 01 85 c9 0f 85 ad 00 00 00 eb ..t[............
    0040e9c0 59 83 e9 0f 85 c9 0f 84 87 00 00 00 83 e9 02 85 Y...............
    0040e9d0 c9 0f 84 87 00 00 00 83 e9 01 85 c9 74 26 83 e9 ............t&..
    0040e9e0 04 85 c9 0f 85 83 00 00 00 eb 5a 48 8b 4d 68 e8 ..........ZH.Mh.
    0040e9f0 4c d3 ff ff e9 84 00 00 00 48 8b 4d 68 e8 8e d3 L........H.Mh...
    0040ea00 ff ff eb 79 48 8b 4d 68 e8 e3 d2 ff ff eb 6e 48 ...yH.Mh......nH
    0040ea10 8b 4d 68 e8 e8 fb ff ff eb 63 48 0f b6 48 01 48 .Mh......cH..H.H
    0040ea20 8d 04 08 48 89 45 50 48 8b 4d 68 48 8b 45 50 48 ...H.EPH.MhH.EPH
    0040ea30 8b 40 0a 48 8b 10 48 8b 45 50 44 8b 40 06 e8 fd .@.H..H.EPD.@...
    0040ea40 01 00 00 eb 38 48 8b 4d 68 48 89 c2 e8 df fb ff ....8H.MhH......
    0040ea50 ff eb 2a 48 8b 4d 68 e8 a4 3a 00 00 eb 1f 48 8b ..*H.Mh..:....H.
    0040ea60 4d 68 48 89 c2 e8 96 1b 00 00 eb 11 b1 02 e8 ad MhH.............
    0040ea70 6f ff ff eb 08 90 90 e8 a4 c6 ff ff 90 48 83 7d o............H.}
    0040ea80 78 00 0f 87 c9 fe ff ff e8 83 c5 ff ff e8 8e c6 x...............
    0040ea90 ff ff 90 ...
    0040ea93
    0040ea93loc_40ea93:
    0040ea93mov rax, [rbp+176]
    0040ea9amov [rbp+72], rax
    0040ea9e
    0040ea9eloc_40ea9e:
    0040ea9emov rax, [rbp+72]
    0040eaa2lea rsp, [rbp+152]
    0040eaa9pop rbx
    0040eaaapop rbp
    0040eaabret
    0040e630
    0040eaac
    0040eaac 48 8d 40 00 H.@.
    0040eab0
    0040eab0fn_40eab0:
    0040eab0sub rsp, 40
    0040eab4call fn_40b050
    0040eab9add rsp, 40
    0040eabdret
    0040eab0
    0040eabe
    0040eabe 48 90 H.
    0040eac0
    0040eac0fn_40eac0:
    0040eac0sub rsp, 40
    0040eac4call fn_40b050
    0040eac9add rsp, 40
    0040eacdret
    0040eac0
    0040eace
    0040eace 48 90 H.
    0040ead0
    0040ead0fn_40ead0:
    0040ead0sub rsp, 40
    0040ead4call fn_40b050
    0040ead9add rsp, 40
    0040eaddret
    0040ead0
    0040eade
    0040eade // align 0x10
    0040eae0
    0040eae0fn_40eae0:
    0040eae0push rbp
    0040eae1sub rsp, 64
    0040eae5mov rbp, rsp
    0040eae8mov [rbp+40], rbp
    0040eaecmov [rbp+80], rcx
    0040eaf0mov [rbp+88], rdx
    0040eaf4mov [rbp+96], r8
    0040eaf8mov [rbp+104], r9
    0040eafcmov rax, [rbp+96]
    0040eb00movzx rcx, [rax+1]
    0040eb05lea rcx, [rax+rcx]
    0040eb09mov [rbp+56], rcx
    0040eb0dmovzx rax, [rax]
    0040eb11sub al, 8
    0040eb14cmp al, 15
    0040eb17ja 0x40eb37
    0040eb19mov dx, 1
    0040eb1dmovzx cx, al
    0040eb21and cx, 127
    0040eb25shl edx, cl
    0040eb27movzx rax, [rip+257]
    0040eb2ftest dx, ax
    0040eb32setne al
    0040eb35jmp 0x40eb39
    0040eb37
    0040eb37loc_40eb37:
    0040eb37xor eax, eax
    0040eb39
    0040eb39loc_40eb39:
    0040eb39test al, al
    0040eb3bje 0x40eb4a
    0040eb3dmov rax, [rbp+56]
    0040eb41mov eax, [rax+2]
    0040eb44mov [rbp+48], rax
    0040eb48jmp 0x40eb52
    0040eb4a
    0040eb4aloc_40eb4a:
    0040eb4amov [rbp+48], 8
    0040eb52
    0040eb52loc_40eb52:
    0040eb52mov rax, [rbp+48]
    0040eb56add [rbp+88], rax
    0040eb5asub [rbp+104], 1
    0040eb5fcmp [rbp+104], 0
    0040eb64jbe 0x40ec0d
    0040eb6a
    0040eb6aloc_40eb6a:
    0040eb6anop
    0040eb6bmov rax, [rbp+96]
    0040eb6fmovzx rax, [rax]
    0040eb73cmp eax, 15
    0040eb76jg 0x40eb8d
    0040eb78cmp eax, 15
    0040eb7bje 0x40ebca
    0040eb7dsub eax, 13
    0040eb80test eax, eax
    0040eb82je 0x40eb9d
    0040eb84sub eax, 1
    0040eb87test eax, eax
    0040eb89jne 0x40ebe4
    0040eb8bjmp 0x40ebbb
    0040eb8d
    0040eb8dloc_40eb8d:
    0040eb8dsub eax, 17
    0040eb90test eax, eax
    0040eb92je 0x40ebd5
    0040eb94sub eax, 5
    0040eb97test eax, eax
    0040eb99jne 0x40ebe4
    0040eb9bjmp 0x40ebbb
    0040eb9d
    0040eb9dloc_40eb9d:
    0040eb9dmov rcx, [rbp+88]
    0040eba1mov rax, [rbp+56]
    0040eba5mov rax, [rax+10]
    0040eba9mov rdx, [rax]
    0040ebacmov rax, [rbp+56]
    0040ebb0mov r8l, [rax+6]
    0040ebb4call fn_40ec40
    0040ebb9jmp 0x40ebf5
    0040ebbb
    0040ebbbloc_40ebbb:
    0040ebbbmov rcx, [rbp+88]
    0040ebbfmov rdx, [rbp+96]
    0040ebc3call fn_40e630
    0040ebc8jmp 0x40ebf5
    0040ebca
    0040ebcaloc_40ebca:
    0040ebcamov rcx, [rbp+88]
    0040ebcecall fn_412500
    0040ebd3jmp 0x40ebf5
    0040ebd5
    0040ebd5loc_40ebd5:
    0040ebd5mov rcx, [rbp+88]
    0040ebd9mov rdx, [rbp+96]
    0040ebddcall fn_410600
    0040ebe2jmp 0x40ebf5
    0040ebe4
    0040ebe4loc_40ebe4:
    0040ebe4mov cl, 2
    0040ebe6call fn_405a20
    0040ebebjmp 0x40ebf5
    0040ebed
    0040ebed 90 90 e8 ...
    0040ebf0 2c c5 ff ff 90 ,....
    0040ebf5
    0040ebf5loc_40ebf5:
    0040ebf5mov rax, [rbp+48]
    0040ebf9add [rbp+88], rax
    0040ebfdsub [rbp+104], 1
    0040ec02cmp [rbp+104], 0
    0040ec07jne 0x40eb6a
    0040ec0d
    0040ec0dloc_40ec0d:
    0040ec0dlea rsp, [rbp+64]
    0040ec11pop rbp
    0040ec12ret
    0040eae0
    0040ec13
    0040ec13 48 8d 44 20 00 48 8d 04 05 00 00 00 00 H.D .H.......
    0040ec20
    0040ec20fn_40ec20:
    0040ec20sub rsp, 40
    0040ec24call fn_40b050
    0040ec29add rsp, 40
    0040ec2dret
    0040ec20
    0040ec2e
    0040ec2e 00 00 ..
    0040ec30 60 40 cc cc cc cc cc cc cc cc cc cc cc cc cc cc `@..............
    0040ec40
    0040ec40fn_40ec40:
    0040ec40push rbp
    0040ec41sub rsp, 64
    0040ec45mov rbp, rsp
    0040ec48mov [rbp+40], rbp
    0040ec4cmov [rbp+80], rcx
    0040ec50mov [rbp+88], rdx
    0040ec54mov [rbp+96], r8
    0040ec58mov rax, [rbp+80]
    0040ec5cmov [rbp+56], rax
    0040ec60cmp [rbp+96], 0
    0040ec65je 0x40ee82
    0040ec6bmov rax, [rbp+88]
    0040ec6fmov [rbp+32], rax
    0040ec73movzx rax, [rax]
    0040ec77cmp eax, 14
    0040ec7ajg 0x40eca7
    0040ec7ccmp eax, 14
    0040ec7fje 0x40ed96
    0040ec85sub eax, 10
    0040ec88test eax, eax
    0040ec8aje 0x40ecd4
    0040ec8csub eax, 1
    0040ec8ftest eax, eax
    0040ec91je 0x40ece5
    0040ec93sub eax, 1
    0040ec96test eax, eax
    0040ec98je 0x40ed07
    0040ec9asub eax, 1
    0040ec9dtest eax, eax
    0040ec9fjne 0x40ee7b
    0040eca5jmp 0x40ed26
    0040eca7
    0040eca7loc_40eca7:
    0040eca7sub eax, 15
    0040ecaatest eax, eax
    0040ecacje 0x40edf7
    0040ecb2sub eax, 2
    0040ecb5test eax, eax
    0040ecb7je 0x40ee37
    0040ecbdsub eax, 1
    0040ecc0test eax, eax
    0040ecc2je 0x40ecf6
    0040ecc4sub eax, 4
    0040ecc7test eax, eax
    0040ecc9jne 0x40ee7b
    0040eccfjmp 0x40ed96
    0040ecd4
    0040ecd4loc_40ecd4:
    0040ecd4mov rcx, [rbp+80]
    0040ecd8mov edx, [rbp+96]
    0040ecdbcall fn_40be20
    0040ece0jmp 0x40ee82
    0040ece5
    0040ece5loc_40ece5:
    0040ece5mov rcx, [rbp+80]
    0040ece9mov edx, [rbp+96]
    0040ececcall fn_40be70
    0040ecf1jmp 0x40ee82
    0040ecf6
    0040ecf6loc_40ecf6:
    0040ecf6mov rcx, [rbp+80]
    0040ecfamov edx, [rbp+96]
    0040ecfdcall fn_40bdd0
    0040ed02jmp 0x40ee82
    0040ed07
    0040ed07loc_40ed07:
    0040ed07mov rcx, [rbp+80]
    0040ed0bcall fn_40e600
    0040ed10add [rbp+80], 24
    0040ed15sub [rbp+96], 1
    0040ed1acmp [rbp+96], 0
    0040ed1fjne 0x40ed07
    0040ed21jmp 0x40ee82
    0040ed26
    0040ed26loc_40ed26:
    0040ed26nop
    0040ed27mov rcx, [rbp+32]
    0040ed2bmovzx rax, [rcx+1]
    0040ed30lea rax, [rcx+rax]
    0040ed34mov [rbp+48], rax
    0040ed38
    0040ed38loc_40ed38:
    0040ed38mov rcx, [rbp+80]
    0040ed3cmov rax, [rbp+48]
    0040ed40mov rax, [rax+10]
    0040ed44mov rdx, [rax]
    0040ed47mov rax, [rbp+48]
    0040ed4bmov r8l, [rax+6]
    0040ed4fcall fn_40ec40
    0040ed54mov rax, [rbp+48]
    0040ed58mov eax, [rax+2]
    0040ed5badd [rbp+80], rax
    0040ed5fsub [rbp+96], 1
    0040ed64cmp [rbp+96], 0
    0040ed69jne 0x40ed38
    0040ed6bjmp 0x40ee82
    0040ed70
    0040ed70 90 90 48 89 e9 48 8b 55 50 4c 8b 45 58 4c 8b 4d ..H..H.UPL.EXL.M
    0040ed80 60 e8 5a fd ff ff e8 85 c2 ff ff e8 90 c3 ff ff `.Z.............
    0040ed90 90 e9 ec 00 00 00 ......
    0040ed96
    0040ed96loc_40ed96:
    0040ed96nop
    0040ed97mov rcx, [rbp+32]
    0040ed9bmovzx rax, [rcx+1]
    0040eda0lea rax, [rcx+rax]
    0040eda4mov [rbp+48], rax
    0040eda8
    0040eda8loc_40eda8:
    0040eda8mov rcx, [rbp+80]
    0040edacmov rdx, [rbp+88]
    0040edb0call fn_40e630
    0040edb5mov rax, [rbp+48]
    0040edb9mov eax, [rax+2]
    0040edbcadd [rbp+80], rax
    0040edc0sub [rbp+96], 1
    0040edc5cmp [rbp+96], 0
    0040edcajne 0x40eda8
    0040edccjmp 0x40ee82
    0040edd1
    0040edd1 90 90 48 89 e9 48 8b 55 50 4c 8b 45 58 4c 8b ..H..H.UPL.EXL.
    0040ede0 4d 60 e8 f9 fc ff ff e8 24 c2 ff ff e8 2f c3 ff M`......$..../..
    0040edf0 ff 90 e9 8b 00 00 00 .......
    0040edf7
    0040edf7loc_40edf7:
    0040edf7nop
    0040edf8
    0040edf8loc_40edf8:
    0040edf8mov rcx, [rbp+80]
    0040edfccall fn_412500
    0040ee01add [rbp+80], 8
    0040ee06sub [rbp+96], 1
    0040ee0bcmp [rbp+96], 0
    0040ee10jne 0x40edf8
    0040ee12jmp 0x40ee82
    0040ee14
    0040ee14 90 90 48 89 e9 48 8b 55 50 4c 8b 45 ..H..H.UPL.E
    0040ee20 58 4c 8b 4d 60 e8 b6 fc ff ff e8 e1 c1 ff ff e8 XL.M`...........
    0040ee30 ec c2 ff ff 90 eb 4b ......K
    0040ee37
    0040ee37loc_40ee37:
    0040ee37nop
    0040ee38
    0040ee38loc_40ee38:
    0040ee38mov rcx, [rbp+80]
    0040ee3cmov rdx, [rbp+88]
    0040ee40call fn_410600
    0040ee45add [rbp+80], 8
    0040ee4asub [rbp+96], 1
    0040ee4fcmp [rbp+96], 0
    0040ee54jne 0x40ee38
    0040ee56jmp 0x40ee82
    0040ee58
    0040ee58 90 90 48 89 e9 48 8b 55 ..H..H.U
    0040ee60 50 4c 8b 45 58 4c 8b 4d 60 e8 72 fc ff ff e8 9d PL.EXL.M`.r.....
    0040ee70 c1 ff ff e8 a8 c2 ff ff 90 eb 07 ...........
    0040ee7b
    0040ee7bloc_40ee7b:
    0040ee7bmov cl, 2
    0040ee7dcall fn_405a20
    0040ee82
    0040ee82loc_40ee82:
    0040ee82mov rax, [rbp+56]
    0040ee86lea rsp, [rbp+64]
    0040ee8apop rbp
    0040ee8bret
    0040ec40
    0040ee8c
    0040ee8c 48 8d 40 00 H.@.
    0040ee90
    0040ee90fn_40ee90:
    0040ee90sub rsp, 40
    0040ee94call fn_40b050
    0040ee99add rsp, 40
    0040ee9dret
    0040ee90
    0040ee9e
    0040ee9e 48 90 H.
    0040eea0
    0040eea0fn_40eea0:
    0040eea0sub rsp, 40
    0040eea4call fn_40b050
    0040eea9add rsp, 40
    0040eeadret
    0040eea0
    0040eeae
    0040eeae 48 90 H.
    0040eeb0
    0040eeb0fn_40eeb0:
    0040eeb0sub rsp, 40
    0040eeb4call fn_40b050
    0040eeb9add rsp, 40
    0040eebdret
    0040eeb0
    0040eebe
    0040eebe 48 90 H.
    0040eec0
    0040eec0fn_40eec0:
    0040eec0sub rsp, 40
    0040eec4call fn_40b050
    0040eec9add rsp, 40
    0040eecdret
    0040eec0
    0040eece
    0040eece // align 0x10
    0040eed0
    0040eed0fn_40eed0:
    0040eed0sub rsp, 40
    0040eed4mov r8l, 1
    0040eedacall fn_40ec40
    0040eedfadd rsp, 40
    0040eee3ret
    0040eed0
    0040eee4
    0040eee4 // align 0x10
    0040eef0
    0040eef0fn_40eef0:
    0040eef0sub rsp, 40
    0040eef4cmp [rip+0x4a124], 0
    0040eefcje 0x40ef06
    0040eefecall [rip+0x4a11c]
    0040ef04jmp 0x40ef0d
    0040ef06
    0040ef06loc_40ef06:
    0040ef06mov cl, 16
    0040ef08call fn_405a20
    0040ef0d
    0040ef0dloc_40ef0d:
    0040ef0dadd rsp, 40
    0040ef11ret
    0040eef0
    0040ef12
    0040ef12 // align 0x10
    0040ef20
    0040ef20fn_40ef20:
    0040ef20push r14
    0040ef22push r13
    0040ef24push rdi
    0040ef25push rsi
    0040ef26push rbx
    0040ef27sub rsp, 64
    0040ef2bmov [rsp+32], rcx
    0040ef30mov [rsp+40], rdx
    0040ef35movzx rax, [r8+1]
    0040ef3alea rax, [r8+rax]
    0040ef3emov [rsp+48], rax
    0040ef43cmp [r8], 22
    0040ef47jne 0x40ef7e
    0040ef49mov rax, [rsp+48]
    0040ef4emov eax, [rax+6]
    0040ef51shl eax, 4
    0040ef54mov eax, eax
    0040ef56mov rcx, [rsp+48]
    0040ef5blea rbx, [rcx+rax+10]
    0040ef60cmp [rbx], 3
    0040ef63jbe 0x40ef7e
    0040ef65cmp [rbx+25], 0
    0040ef6aje 0x40ef7e
    0040ef6cmov rcx, [rsp+32]
    0040ef71mov rdx, [rsp+40]
    0040ef76call [rbx+25]
    0040ef79jmp 0x40f208
    0040ef7e
    0040ef7eloc_40ef7e:
    0040ef7exor r13, r13
    0040ef81mov rax, [rsp+48]
    0040ef86mov eax, [rax+6]
    0040ef89test eax, eax
    0040ef8bjbe 0x40f1de
    0040ef91mov edi, eax
    0040ef93mov ecx, eax
    0040ef95sub ecx, 1
    0040ef98mov [rsp+60], ecx
    0040ef9ctest ecx, ecx
    0040ef9ejb 0x40efd6
    0040efa0
    0040efa0loc_40efa0:
    0040efa0mov ecx, [rsp+60]
    0040efa4mov ecx, ecx
    0040efa6add rcx, rcx
    0040efa9mov rdx, [rsp+48]
    0040efaecmp [rdx+8*rcx+10], 0
    0040efb4jne 0x40efc2
    0040efb6mov edi, [rsp+60]
    0040efbaadd edi, 1
    0040efbdsub eax, 1
    0040efc0jmp 0x40efd6
    0040efc2
    0040efc2loc_40efc2:
    0040efc2mov ecx, [rsp+60]
    0040efc6sub ecx, 1
    0040efc9mov [rsp+60], ecx
    0040efcdmov ecx, [rsp+60]
    0040efd1cmp ecx, -1
    0040efd4jne 0x40efa0
    0040efd6
    0040efd6loc_40efd6:
    0040efd6nop
    0040efd7xor esi, esi
    0040efd9xor ecx, ecx
    0040efdbmov r14l, eax
    0040efdesub r14l, 1
    0040efe2mov eax, ecx
    0040efe4cmp eax, r14l
    0040efe7ja 0x40f1dd
    0040efedsub r14l, ecx
    0040eff0add r14l, 1
    0040eff4
    0040eff4loc_40eff4:
    0040eff4mov eax, esi
    0040eff6add rax, rax
    0040eff9mov rcx, [rsp+48]
    0040effecmp [rcx+8*rax+10], 0
    0040f004je 0x40f034
    0040f006mov rax, [rsp+48]
    0040f00bcmp edi, [rax+6]
    0040f00eje 0x40f029
    0040f010mov eax, esi
    0040f012add rax, rax
    0040f015mov ecx, edi
    0040f017add rcx, rcx
    0040f01amov rdx, [rsp+48]
    0040f01fmov eax, [rdx+8*rax+18]
    0040f023cmp eax, [rdx+8*rcx+18]
    0040f027jae 0x40f034
    0040f029
    0040f029loc_40f029:
    0040f029mov eax, esi
    0040f02bmov [rsp+60], eax
    0040f02fadd esi, 1
    0040f032jmp 0x40f03d
    0040f034
    0040f034loc_40f034:
    0040f034mov eax, edi
    0040f036mov [rsp+60], eax
    0040f03aadd edi, 1
    0040f03d
    0040f03dloc_40f03d:
    0040f03dmov ebx, [rsp+60]
    0040f041mov ebx, ebx
    0040f043mov rax, rbx
    0040f046add rax, rax
    0040f049mov rcx, [rsp+48]
    0040f04emov eax, [rcx+8*rax+18]
    0040f052cmp rax, r13
    0040f055jbe 0x40f081
    0040f057mov rax, [rsp+40]
    0040f05clea rcx, [rax+r13]
    0040f060mov rax, [rsp+32]
    0040f065lea rdx, [rax+r13]
    0040f069mov rax, rbx
    0040f06cadd rax, rax
    0040f06fmov r8, [rsp+48]
    0040f074mov r8l, [r8+8*rax+18]
    0040f079sub r8, r13
    0040f07ccall fn_405ac0
    0040f081
    0040f081loc_40f081:
    0040f081mov rax, rbx
    0040f084add rax, rax
    0040f087mov rcx, [rsp+48]
    0040f08cmov r13l, [rcx+8*rax+18]
    0040f091add rbx, rbx
    0040f094mov rax, [rsp+48]
    0040f099mov rax, [rax+8*rbx+10]
    0040f09emov rax, [rax]
    0040f0a1mov rcx, [rsp+32]
    0040f0a6lea rcx, [rcx+r13]
    0040f0aamov rdx, [rsp+40]
    0040f0aflea rdx, [rdx+r13]
    0040f0b3movzx r8, [rax]
    0040f0b7cmp r8l, 14
    0040f0bbjg 0x40f0f1
    0040f0bdcmp r8l, 14
    0040f0c1je 0x40f17f
    0040f0c7sub r8l, 10
    0040f0cbtest r8l, r8l
    0040f0ceje 0x40f123
    0040f0d0sub r8l, 1
    0040f0d4test r8l, r8l
    0040f0d7je 0x40f134
    0040f0d9sub r8l, 1
    0040f0ddtest r8l, r8l
    0040f0e0je 0x40f153
    0040f0e2sub r8l, 1
    0040f0e6test r8l, r8l
    0040f0e9jne 0x40f1c9
    0040f0efjmp 0x40f15e
    0040f0f1
    0040f0f1loc_40f0f1:
    0040f0f1sub r8l, 15
    0040f0f5test r8l, r8l
    0040f0f8je 0x40f198
    0040f0fesub r8l, 2
    0040f102test r8l, r8l
    0040f105je 0x40f1b8
    0040f10bsub r8l, 1
    0040f10ftest r8l, r8l
    0040f112je 0x40f145
    0040f114sub r8l, 4
    0040f118test r8l, r8l
    0040f11bjne 0x40f1c9
    0040f121jmp 0x40f17f
    0040f123
    0040f123loc_40f123:
    0040f123mov rdx, [rdx]
    0040f126call fn_40c4a0
    0040f12badd r13, 8
    0040f12fjmp 0x40f1d0
    0040f134
    0040f134loc_40f134:
    0040f134mov rdx, [rdx]
    0040f137call fn_40c440
    0040f13cadd r13, 8
    0040f140jmp 0x40f1d0
    0040f145
    0040f145loc_40f145:
    0040f145mov rdx, [rdx]
    0040f148call fn_40c360
    0040f14dadd r13, 8
    0040f151jmp 0x40f1d0
    0040f153
    0040f153loc_40f153:
    0040f153call fn_40eef0
    0040f158add r13, 24
    0040f15cjmp 0x40f1d0
    0040f15e
    0040f15eloc_40f15e:
    0040f15emovzx r8, [rax+1]
    0040f163lea rbx, [rax+r8]
    0040f167mov rax, [rbx+10]
    0040f16bmov r8, [rax]
    0040f16emov r9l, [rbx+6]
    0040f172call fn_40f580
    0040f177mov eax, [rbx+2]
    0040f17aadd r13, rax
    0040f17djmp 0x40f1d0
    0040f17f
    0040f17floc_40f17f:
    0040f17fmovzx r8, [rax+1]
    0040f184lea rbx, [rax+r8]
    0040f188mov r8, rax
    0040f18bcall fn_40ef20
    0040f190mov eax, [rbx+2]
    0040f193add r13, rax
    0040f196jmp 0x40f1d0
    0040f198
    0040f198loc_40f198:
    0040f198mov eax, [rsp+60]
    0040f19ccmp eax, esi
    0040f19ejbe 0x40f1aa
    0040f1a0mov rdx, [rdx]
    0040f1a3call fn_414190
    0040f1a8jmp 0x40f1b2
    0040f1aa
    0040f1aaloc_40f1aa:
    0040f1aamov rdx, [rdx]
    0040f1adcall fn_412540
    0040f1b2
    0040f1b2loc_40f1b2:
    0040f1b2add r13, 8
    0040f1b6jmp 0x40f1d0
    0040f1b8
    0040f1b8loc_40f1b8:
    0040f1b8mov rdx, [rdx]
    0040f1bbmov r8, rax
    0040f1becall fn_410680
    0040f1c3add r13, 8
    0040f1c7jmp 0x40f1d0
    0040f1c9
    0040f1c9loc_40f1c9:
    0040f1c9mov cl, 2
    0040f1cbcall fn_405a20
    0040f1d0
    0040f1d0loc_40f1d0:
    0040f1d0sub r14l, 1
    0040f1d4test r14l, r14l
    0040f1d7jne 0x40eff4
    0040f1dd
    0040f1ddloc_40f1dd:
    0040f1ddnop
    0040f1de
    0040f1deloc_40f1de:
    0040f1demov rax, [rsp+48]
    0040f1e3mov eax, [rax+2]
    0040f1e6cmp rax, r13
    0040f1e9jbe 0x40f208
    0040f1ebmov rcx, [rsp+40]
    0040f1f0lea rcx, [rcx+r13]
    0040f1f4mov rdx, [rsp+32]
    0040f1f9lea rdx, [rdx+r13]
    0040f1fdmov r8, rax
    0040f200sub r8, r13
    0040f203call fn_405ac0
    0040f208
    0040f208loc_40f208:
    0040f208add rsp, 64
    0040f20cpop rbx
    0040f20dpop rsi
    0040f20epop rdi
    0040f20fpop r13
    0040f211pop r14
    0040f213ret
    0040ef20
    0040f214
    0040f214 // align 0x10
    0040f220
    0040f220fn_40f220:
    0040f220push r14
    0040f222push r13
    0040f224push rdi
    0040f225push rsi
    0040f226push rbx
    0040f227sub rsp, 64
    0040f22bmov [rsp+32], rcx
    0040f230mov [rsp+40], rdx
    0040f235mov rbx, r8
    0040f238mov rax, rbx
    0040f23bmovzx rcx, [rax+1]
    0040f240lea rcx, [rax+rcx]
    0040f244mov [rsp+48], rcx
    0040f249cmp [rax], 22
    0040f24cjne 0x40f272
    0040f24emov rcx, [rsp+32]
    0040f253mov rdx, [rsp+40]
    0040f258mov r8, rbx
    0040f25bcall fn_40ef20
    0040f260mov rcx, [rsp+40]
    0040f265mov rdx, rbx
    0040f268call fn_40e630
    0040f26djmp 0x40f565
    0040f272
    0040f272loc_40f272:
    0040f272xor edi, edi
    0040f274mov rax, [rsp+48]
    0040f279mov eax, [rax+6]
    0040f27ctest eax, eax
    0040f27ejbe 0x40f53b
    0040f284mov esi, eax
    0040f286mov ebx, eax
    0040f288sub ebx, 1
    0040f28btest ebx, ebx
    0040f28djb 0x40f2b3
    0040f28f
    0040f28floc_40f28f:
    0040f28fmov ecx, ebx
    0040f291add rcx, rcx
    0040f294mov rdx, [rsp+48]
    0040f299cmp [rdx+8*rcx+10], 0
    0040f29fjne 0x40f2ab
    0040f2a1mov esi, ebx
    0040f2a3add esi, 1
    0040f2a6sub eax, 1
    0040f2a9jmp 0x40f2b3
    0040f2ab
    0040f2abloc_40f2ab:
    0040f2absub ebx, 1
    0040f2aecmp ebx, -1
    0040f2b1jne 0x40f28f
    0040f2b3
    0040f2b3loc_40f2b3:
    0040f2b3nop
    0040f2b4xor ecx, ecx
    0040f2b6mov [rsp+60], ecx
    0040f2baxor ecx, ecx
    0040f2bcmov r14l, eax
    0040f2bfsub r14l, 1
    0040f2c3mov eax, ecx
    0040f2c5cmp eax, r14l
    0040f2c8ja 0x40f53a
    0040f2cesub r14l, ecx
    0040f2d1add r14l, 1
    0040f2d5
    0040f2d5loc_40f2d5:
    0040f2d5mov eax, [rsp+60]
    0040f2d9mov eax, eax
    0040f2dbadd rax, rax
    0040f2demov rcx, [rsp+48]
    0040f2e3cmp [rcx+8*rax+10], 0
    0040f2e9je 0x40f321
    0040f2ebmov rax, [rsp+48]
    0040f2f0cmp esi, [rax+6]
    0040f2f3je 0x40f312
    0040f2f5mov eax, [rsp+60]
    0040f2f9mov eax, eax
    0040f2fbadd rax, rax
    0040f2femov ecx, esi
    0040f300add rcx, rcx
    0040f303mov rdx, [rsp+48]
    0040f308mov eax, [rdx+8*rax+18]
    0040f30ccmp eax, [rdx+8*rcx+18]
    0040f310jae 0x40f321
    0040f312
    0040f312loc_40f312:
    0040f312mov eax, [rsp+60]
    0040f316mov ebx, eax
    0040f318add eax, 1
    0040f31bmov [rsp+60], eax
    0040f31fjmp 0x40f326
    0040f321
    0040f321loc_40f321:
    0040f321mov ebx, esi
    0040f323add esi, 1
    0040f326
    0040f326loc_40f326:
    0040f326mov r13l, ebx
    0040f329mov rax, r13
    0040f32cadd rax, rax
    0040f32fmov rcx, [rsp+48]
    0040f334mov eax, [rcx+8*rax+18]
    0040f338cmp rax, rdi
    0040f33bjbe 0x40f367
    0040f33dmov rax, [rsp+40]
    0040f342lea rcx, [rax+rdi]
    0040f346mov rax, [rsp+32]
    0040f34blea rdx, [rax+rdi]
    0040f34fmov rax, r13
    0040f352add rax, rax
    0040f355mov r8, [rsp+48]
    0040f35amov r8l, [r8+8*rax+18]
    0040f35fsub r8, rdi
    0040f362call fn_405ac0
    0040f367
    0040f367loc_40f367:
    0040f367mov rax, r13
    0040f36aadd rax, rax
    0040f36dmov rcx, [rsp+48]
    0040f372mov edi, [rcx+8*rax+18]
    0040f376add r13, r13
    0040f379mov rax, [rsp+48]
    0040f37emov rax, [rax+8*r13+10]
    0040f383mov r13, [rax]
    0040f386mov rax, [rsp+32]
    0040f38blea rax, [rax+rdi]
    0040f38fmov rcx, [rsp+40]
    0040f394lea rcx, [rcx+rdi]
    0040f398movzx rdx, [r13]
    0040f39dcmp edx, 14
    0040f3a0jg 0x40f3d4
    0040f3a2cmp edx, 14
    0040f3a5je 0x40f4a8
    0040f3absub edx, 10
    0040f3aetest edx, edx
    0040f3b0je 0x40f401
    0040f3b2sub edx, 1
    0040f3b5test edx, edx
    0040f3b7je 0x40f420
    0040f3b9sub edx, 1
    0040f3bctest edx, edx
    0040f3beje 0x40f45e
    0040f3c4sub edx, 1
    0040f3c7test edx, edx
    0040f3c9jne 0x40f526
    0040f3cfjmp 0x40f47d
    0040f3d4
    0040f3d4loc_40f3d4:
    0040f3d4sub edx, 15
    0040f3d7test edx, edx
    0040f3d9je 0x40f4c8
    0040f3dfsub edx, 2
    0040f3e2test edx, edx
    0040f3e4je 0x40f504
    0040f3easub edx, 1
    0040f3edtest edx, edx
    0040f3efje 0x40f43f
    0040f3f1sub edx, 4
    0040f3f4test edx, edx
    0040f3f6jne 0x40f526
    0040f3fcjmp 0x40f4a8
    0040f401
    0040f401loc_40f401:
    0040f401mov rbx, rcx
    0040f404mov rcx, rax
    0040f407mov rdx, [rbx]
    0040f40acall fn_40c4a0
    0040f40fmov rcx, rbx
    0040f412call fn_40bd40
    0040f417add rdi, 8
    0040f41bjmp 0x40f52d
    0040f420
    0040f420loc_40f420:
    0040f420mov rbx, rcx
    0040f423mov rcx, rax
    0040f426mov rdx, [rbx]
    0040f429call fn_40c440
    0040f42emov rcx, rbx
    0040f431call fn_40bd90
    0040f436add rdi, 8
    0040f43ajmp 0x40f52d
    0040f43f
    0040f43floc_40f43f:
    0040f43fmov rbx, rcx
    0040f442mov rcx, rax
    0040f445mov rdx, [rbx]
    0040f448call fn_40c360
    0040f44dmov rcx, rbx
    0040f450call fn_40bcf0
    0040f455add rdi, 8
    0040f459jmp 0x40f52d
    0040f45e
    0040f45eloc_40f45e:
    0040f45emov rbx, rcx
    0040f461mov rcx, rax
    0040f464mov rdx, rbx
    0040f467call fn_40eef0
    0040f46cmov rcx, rbx
    0040f46fcall fn_40e600
    0040f474add rdi, 24
    0040f478jmp 0x40f52d
    0040f47d
    0040f47dloc_40f47d:
    0040f47dmovzx rdx, [r13+1]
    0040f482lea rbx, [r13+rdx]
    0040f487mov rdx, rcx
    0040f48amov rcx, [rbx+10]
    0040f48emov r8, [rcx]
    0040f491mov r9l, [rbx+6]
    0040f495mov rcx, rax
    0040f498call fn_40f750
    0040f49dmov eax, [rbx+2]
    0040f4a0add rdi, rax
    0040f4a3jmp 0x40f52d
    0040f4a8
    0040f4a8loc_40f4a8:
    0040f4a8movzx rdx, [r13+1]
    0040f4adlea rbx, [r13+rdx]
    0040f4b2mov rdx, rcx
    0040f4b5mov r8, r13
    0040f4b8mov rcx, rax
    0040f4bbcall fn_40f220
    0040f4c0mov eax, [rbx+2]
    0040f4c3add rdi, rax
    0040f4c6jmp 0x40f52d
    0040f4c8
    0040f4c8loc_40f4c8:
    0040f4c8mov edx, [rsp+60]
    0040f4cccmp ebx, edx
    0040f4cejbe 0x40f4e8
    0040f4d0mov rbx, rcx
    0040f4d3mov rcx, rax
    0040f4d6mov rdx, [rbx]
    0040f4d9call fn_414190
    0040f4demov rcx, rbx
    0040f4e1call fn_414150
    0040f4e6jmp 0x40f4fe
    0040f4e8
    0040f4e8loc_40f4e8:
    0040f4e8mov rbx, rcx
    0040f4ebmov rcx, rax
    0040f4eemov rdx, [rbx]
    0040f4f1call fn_412540
    0040f4f6mov rcx, rbx
    0040f4f9call fn_412500
    0040f4fe
    0040f4feloc_40f4fe:
    0040f4feadd rdi, 8
    0040f502jmp 0x40f52d
    0040f504
    0040f504loc_40f504:
    0040f504mov rbx, rcx
    0040f507mov rcx, rax
    0040f50amov rdx, [rbx]
    0040f50dmov r8, r13
    0040f510call fn_410680
    0040f515mov rcx, rbx
    0040f518mov rdx, r13
    0040f51bcall fn_410600
    0040f520add rdi, 8
    0040f524jmp 0x40f52d
    0040f526
    0040f526loc_40f526:
    0040f526mov cl, 2
    0040f528call fn_405a20
    0040f52d
    0040f52dloc_40f52d:
    0040f52dsub r14l, 1
    0040f531test r14l, r14l
    0040f534jne 0x40f2d5
    0040f53a
    0040f53aloc_40f53a:
    0040f53anop
    0040f53b
    0040f53bloc_40f53b:
    0040f53bmov rax, [rsp+48]
    0040f540mov eax, [rax+2]
    0040f543cmp rax, rdi
    0040f546jbe 0x40f565
    0040f548mov rcx, [rsp+40]
    0040f54dlea rcx, [rcx+rdi]
    0040f551mov rdx, [rsp+32]
    0040f556lea rdx, [rdx+rdi]
    0040f55amov r8, rax
    0040f55dsub r8, rdi
    0040f560call fn_405ac0
    0040f565
    0040f565loc_40f565:
    0040f565add rsp, 64
    0040f569pop rbx
    0040f56apop rsi
    0040f56bpop rdi
    0040f56cpop r13
    0040f56epop r14
    0040f570ret
    0040f220
    0040f571
    0040f571 // align 0x10
    0040f580
    0040f580fn_40f580:
    0040f580push r14
    0040f582push r13
    0040f584push rdi
    0040f585push rsi
    0040f586push rbx
    0040f587sub rsp, 32
    0040f58bmov rbx, rcx
    0040f58emov rsi, rdx
    0040f591mov rdi, r8
    0040f594mov r13, r9
    0040f597test r13, r13
    0040f59aje 0x40f73d
    0040f5a0mov rax, rdi
    0040f5a3movzx rcx, [rax]
    0040f5a7cmp ecx, 14
    0040f5aajg 0x40f5e2
    0040f5accmp ecx, 14
    0040f5afje 0x40f6c9
    0040f5b5sub ecx, 10
    0040f5b8test ecx, ecx
    0040f5baje 0x40f626
    0040f5bcsub ecx, 1
    0040f5bftest ecx, ecx
    0040f5c1je 0x40f647
    0040f5c7sub ecx, 1
    0040f5catest ecx, ecx
    0040f5ccje 0x40f689
    0040f5d2sub ecx, 1
    0040f5d5test ecx, ecx
    0040f5d7jne 0x40f736
    0040f5ddjmp 0x40f693
    0040f5e2
    0040f5e2loc_40f5e2:
    0040f5e2sub ecx, 15
    0040f5e5test ecx, ecx
    0040f5e7je 0x40f70e
    0040f5edsub ecx, 2
    0040f5f0test ecx, ecx
    0040f5f2je 0x40f72f
    0040f5f8sub ecx, 1
    0040f5fbtest ecx, ecx
    0040f5fdje 0x40f668
    0040f5ffsub ecx, 4
    0040f602test ecx, ecx
    0040f604jne 0x40f736
    0040f60ajmp 0x40f6c9
    0040f60f
    0040f60floc_40f60f:
    0040f60fmov rcx, rbx
    0040f612mov rdx, [rsi]
    0040f615call fn_40c4a0
    0040f61aadd rbx, 8
    0040f61eadd rsi, 8
    0040f622sub r13, 1
    0040f626
    0040f626loc_40f626:
    0040f626test r13, r13
    0040f629ja 0x40f60f
    0040f62bjmp 0x40f73d
    0040f630
    0040f630loc_40f630:
    0040f630mov rcx, rbx
    0040f633mov rdx, [rsi]
    0040f636call fn_40c440
    0040f63badd rbx, 8
    0040f63fadd rsi, 8
    0040f643sub r13, 1
    0040f647
    0040f647loc_40f647:
    0040f647test r13, r13
    0040f64aja 0x40f630
    0040f64cjmp 0x40f73d
    0040f651
    0040f651loc_40f651:
    0040f651mov rcx, rbx
    0040f654mov rdx, [rsi]
    0040f657call fn_40c360
    0040f65cadd rbx, 8
    0040f660add rsi, 8
    0040f664sub r13, 1
    0040f668
    0040f668loc_40f668:
    0040f668test r13, r13
    0040f66bja 0x40f651
    0040f66djmp 0x40f73d
    0040f672
    0040f672loc_40f672:
    0040f672mov rcx, rbx
    0040f675mov rdx, rsi
    0040f678call fn_40eef0
    0040f67dadd rbx, 24
    0040f681add rsi, 24
    0040f685sub r13, 1
    0040f689
    0040f689loc_40f689:
    0040f689test r13, r13
    0040f68cja 0x40f672
    0040f68ejmp 0x40f73d
    0040f693
    0040f693loc_40f693:
    0040f693movzx rcx, [rax+1]
    0040f698lea r14, [rax+rcx]
    0040f69cjmp 0x40f6c2
    0040f69e
    0040f69eloc_40f69e:
    0040f69emov rcx, rbx
    0040f6a1mov rdx, rsi
    0040f6a4mov rax, [r14+10]
    0040f6a8mov r8, [rax]
    0040f6abmov r9l, [r14+6]
    0040f6afcall fn_40f580
    0040f6b4mov eax, [r14+2]
    0040f6b8add rbx, rax
    0040f6bbadd rsi, rax
    0040f6besub r13, 1
    0040f6c2
    0040f6c2loc_40f6c2:
    0040f6c2test r13, r13
    0040f6c5ja 0x40f69e
    0040f6c7jmp 0x40f73d
    0040f6c9
    0040f6c9loc_40f6c9:
    0040f6c9movzx rcx, [rax+1]
    0040f6celea r14, [rax+rcx]
    0040f6d2jmp 0x40f6f0
    0040f6d4
    0040f6d4loc_40f6d4:
    0040f6d4mov rcx, rbx
    0040f6d7mov rdx, rsi
    0040f6damov r8, rdi
    0040f6ddcall fn_40ef20
    0040f6e2mov eax, [r14+2]
    0040f6e6add rbx, rax
    0040f6e9add rsi, rax
    0040f6ecsub r13, 1
    0040f6f0
    0040f6f0loc_40f6f0:
    0040f6f0test r13, r13
    0040f6f3ja 0x40f6d4
    0040f6f5jmp 0x40f73d
    0040f6f7
    0040f6f7loc_40f6f7:
    0040f6f7mov rcx, rbx
    0040f6famov rdx, [rsi]
    0040f6fdcall fn_412540
    0040f702add rbx, 8
    0040f706add rsi, 8
    0040f70asub r13, 1
    0040f70e
    0040f70eloc_40f70e:
    0040f70etest r13, r13
    0040f711ja 0x40f6f7
    0040f713jmp 0x40f73d
    0040f715
    0040f715loc_40f715:
    0040f715mov rcx, rbx
    0040f718mov rdx, [rsi]
    0040f71bmov r8, rdi
    0040f71ecall fn_410680
    0040f723add rbx, 8
    0040f727add rsi, 8
    0040f72bsub r13, 1
    0040f72f
    0040f72floc_40f72f:
    0040f72ftest r13, r13
    0040f732ja 0x40f715
    0040f734jmp 0x40f73d
    0040f736
    0040f736loc_40f736:
    0040f736mov cl, 2
    0040f738call fn_405a20
    0040f73d
    0040f73dloc_40f73d:
    0040f73dadd rsp, 32
    0040f741pop rbx
    0040f742pop rsi
    0040f743pop rdi
    0040f744pop r13
    0040f746pop r14
    0040f748ret
    0040f580