File trigona_be6dfedd91e1ebc81d58a61b05b0ef93322425b247636a0f7f5c3eeebbc52edd.exe
Function:
    0040bfd0
    0040bfd0fn_40bfd0:
    0040bfd0push rbp
    0040bfd1push rdi
    0040bfd2push rsi
    0040bfd3push rbx
    0040bfd4sub rsp, 56
    0040bfd8mov rbp, rsp
    0040bfdbmov rbx, rcx
    0040bfdemov rsi, rdx
    0040bfe1mov edi, r8l
    0040bfe4mov rax, [rbx]
    0040bfe7mov [rbp+40], rax
    0040bfebtest edi, edi
    0040bfedjle 0x40c014
    0040bfefmov ecx, edi
    0040bff1call fn_40bbc0
    0040bff6mov [rbx], rax
    0040bff9test rsi, rsi
    0040bffcje 0x40c01b
    0040bffemov rcx, rsi
    0040c001mov rdx, rax
    0040c004mov r8l, edi
    0040c007add r8l, r8l
    0040c00amovsxd r8, r8l
    0040c00dcall fn_405ac0
    0040c012jmp 0x40c01b
    0040c014
    0040c014loc_40c014:
    0040c014mov [rbx], 0
    0040c01b
    0040c01bloc_40c01b:
    0040c01blea rcx, [rbp+40]
    0040c01fcall fn_40bcf0
    0040c024lea rsp, [rbp+56]
    0040c028pop rbx
    0040c029pop rsi
    0040c02apop rdi
    0040c02bpop rbp
    0040c02cret
    0040bfd0
    0040c02d
    0040c02d // align 0x10
    0040c030
    0040c030fn_40c030:
    0040c030push rsi
    0040c031push rbx
    0040c032sub rsp, 40
    0040c036mov rbx, rcx
    0040c039test r8l, r8l
    0040c03cjg 0x40c048
    0040c03emov rcx, rbx
    0040c041call fn_40bd90
    0040c046jmp 0x40c071
    0040c048
    0040c048loc_40c048:
    0040c048mov rcx, rdx
    0040c04bmov edx, r8l
    0040c04ecall SysAllocStringLen
    0040c053mov rsi, rax
    0040c056test rsi, rsi
    0040c059jne 0x40c060
    0040c05bcall fn_40bca0
    0040c060
    0040c060loc_40c060:
    0040c060cmp [rbx], 0
    0040c064je 0x40c06e
    0040c066mov rcx, [rbx]
    0040c069call SysFreeString
    0040c06e
    0040c06eloc_40c06e:
    0040c06emov [rbx], rsi
    0040c071
    0040c071loc_40c071:
    0040c071add rsp, 40
    0040c075pop rbx
    0040c076pop rsi
    0040c077ret
    0040c030
    0040c078
    0040c078 // align 0x10
    0040c080
    0040c080fn_40c080:
    0040c080push r13
    0040c082push rdi
    0040c083push rsi
    0040c084push rbx
    0040c085sub rsp, 40
    0040c089mov rbx, rcx
    0040c08cmov rsi, rdx
    0040c08fmov edi, r8l
    0040c092mov ecx, edi
    0040c094mov edx, r9l
    0040c097call fn_40bc20
    0040c09cmov r13, rax
    0040c09ftest rsi, rsi
    0040c0a2je 0x40c0b2
    0040c0a4mov rcx, rsi
    0040c0a7mov rdx, r13
    0040c0aamovsxd r8, edi
    0040c0adcall fn_405ac0
    0040c0b2
    0040c0b2loc_40c0b2:
    0040c0b2mov rcx, rbx
    0040c0b5call fn_40bd40
    0040c0bamov [rbx], r13
    0040c0bdadd rsp, 40
    0040c0c1pop rbx
    0040c0c2pop rsi
    0040c0c3pop rdi
    0040c0c4pop r13
    0040c0c6ret
    0040c080
    0040c0c7
    0040c0c7 // align 0x10
    0040c0d0
    0040c0d0fn_40c0d0:
    0040c0d0push rbp
    0040c0d1push r13
    0040c0d3push rdi
    0040c0d4push rsi
    0040c0d5push rbx
    0040c0d6mov [rsp-64], 0
    0040c0dbmov [rsp-4160], 0
    0040c0e3sub rsp, 4160
    0040c0eamov rbp, rsp
    0040c0edmov [rbp+48], rcx
    0040c0f1mov [rbp+56], rdx
    0040c0f5mov ebx, r8l
    0040c0f8mov esi, r9l
    0040c0fbtest ebx, ebx
    0040c0fdjg 0x40c10a
    0040c0ffmov rcx, [rbp+48]
    0040c103call fn_40bcf0
    0040c108jmp 0x40c185
    0040c10a
    0040c10aloc_40c10a:
    0040c10amov r13l, ebx
    0040c10dadd r13l, 1
    0040c111cmp r13l, 2047
    0040c118jge 0x40c14b
    0040c11alea rcx, [rbp+64]
    0040c11emov edx, 2047
    0040c123mov r8, [rbp+56]
    0040c127mov r9l, ebx
    0040c12amov [rsp+32], esi
    0040c12ecall fn_40bfa0
    0040c133mov edi, eax
    0040c135test edi, edi
    0040c137jle 0x40c14b
    0040c139mov rcx, [rbp+48]
    0040c13dlea rdx, [rbp+64]
    0040c141mov r8l, edi
    0040c144call fn_40bfd0
    0040c149jmp 0x40c185
    0040c14b
    0040c14bloc_40c14b:
    0040c14bmov edi, r13l
    0040c14emov rcx, [rbp+48]
    0040c152mov edx, edi
    0040c154call fn_40d8d0
    0040c159mov rax, [rbp+48]
    0040c15dmov rcx, [rax]
    0040c160mov edx, edi
    0040c162mov r8, [rbp+56]
    0040c166mov r9l, ebx
    0040c169mov [rsp+32], esi
    0040c16dcall fn_40bfa0
    0040c172mov edi, eax
    0040c174test edi, edi
    0040c176jge 0x40c17a
    0040c178xor edi, edi
    0040c17a
    0040c17aloc_40c17a:
    0040c17amov rcx, [rbp+48]
    0040c17emov edx, edi
    0040c180call fn_40d8d0
    0040c185
    0040c185loc_40c185:
    0040c185lea rsp, [rbp+4160]
    0040c18cpop rbx
    0040c18dpop rsi
    0040c18epop rdi
    0040c18fpop r13
    0040c191pop rbp
    0040c192ret
    0040c0d0
    0040c193
    0040c193 // align 0x10
    0040c1a0
    0040c1a0fn_40c1a0:
    0040c1a0sub rsp, 40
    0040c1a4mov r9l, [rip+0x5986d]
    0040c1abcall fn_40c0d0
    0040c1b0add rsp, 40
    0040c1b4ret
    0040c1a0
    0040c1b5
    0040c1b5 // align 0x10
    0040c1c0
    0040c1c0fn_40c1c0:
    0040c1c0push rbp
    0040c1c1push r13
    0040c1c3push rdi
    0040c1c4push rsi
    0040c1c5push rbx
    0040c1c6mov [rsp-64], 0
    0040c1cbmov [rsp-4160], 0
    0040c1d3sub rsp, 4160
    0040c1damov rbp, rsp
    0040c1ddmov [rbp+48], rcx
    0040c1e1mov [rbp+56], rdx
    0040c1e5mov ebx, r8l
    0040c1e8mov esi, r9l
    0040c1ebtest ebx, ebx
    0040c1edjg 0x40c1fa
    0040c1efmov rcx, [rbp+48]
    0040c1f3call fn_40bd90
    0040c1f8jmp 0x40c275
    0040c1fa
    0040c1faloc_40c1fa:
    0040c1famov r13l, ebx
    0040c1fdadd r13l, 1
    0040c201cmp r13l, 2047
    0040c208jge 0x40c23b
    0040c20alea rcx, [rbp+64]
    0040c20emov edx, 2047
    0040c213mov r8, [rbp+56]
    0040c217mov r9l, ebx
    0040c21amov [rsp+32], esi
    0040c21ecall fn_40bfa0
    0040c223mov edi, eax
    0040c225test edi, edi
    0040c227jle 0x40c23b
    0040c229mov rcx, [rbp+48]
    0040c22dlea rdx, [rbp+64]
    0040c231mov r8l, edi
    0040c234call fn_40c030
    0040c239jmp 0x40c275
    0040c23b
    0040c23bloc_40c23b:
    0040c23bmov edi, r13l
    0040c23emov rcx, [rbp+48]
    0040c242mov edx, edi
    0040c244call fn_40d6b0
    0040c249mov rax, [rbp+48]
    0040c24dmov rcx, [rax]
    0040c250mov edx, edi
    0040c252mov r8, [rbp+56]
    0040c256mov r9l, ebx
    0040c259mov [rsp+32], esi
    0040c25dcall fn_40bfa0
    0040c262mov edi, eax
    0040c264test edi, edi
    0040c266jge 0x40c26a
    0040c268xor edi, edi
    0040c26a
    0040c26aloc_40c26a:
    0040c26amov rcx, [rbp+48]
    0040c26emov edx, edi
    0040c270call fn_40d6b0
    0040c275
    0040c275loc_40c275:
    0040c275lea rsp, [rbp+4160]
    0040c27cpop rbx
    0040c27dpop rsi
    0040c27epop rdi
    0040c27fpop r13
    0040c281pop rbp
    0040c282ret
    0040c1c0
    0040c283
    0040c283 // align 0x10
    0040c290
    0040c290fn_40c290:
    0040c290sub rsp, 40
    0040c294mov r9l, [rip+0x5977d]
    0040c29bcall fn_40c1c0
    0040c2a0add rsp, 40
    0040c2a4ret
    0040c290
    0040c2a5
    0040c2a5 // align 0x10
    0040c2b0
    0040c2b0fn_40c2b0:
    0040c2b0push r13
    0040c2b2push rdi
    0040c2b3push rsi
    0040c2b4push rbx
    0040c2b5sub rsp, 72
    0040c2b9mov [rsp+48], rcx
    0040c2bemov [rsp+56], rdx
    0040c2c3mov ebx, r8l
    0040c2c6mov esi, r9l
    0040c2c9test ebx, ebx
    0040c2cbjg 0x40c2d9
    0040c2cdmov rcx, [rsp+48]
    0040c2d2call fn_40bd40
    0040c2d7jmp 0x40c349
    0040c2d9
    0040c2d9loc_40c2d9:
    0040c2d9test si, si
    0040c2dcjne 0x40c2e6
    0040c2demovzx rsi, [rip+0x59732]
    0040c2e6
    0040c2e6loc_40c2e6:
    0040c2e6movzx r13l, si
    0040c2eaxor ecx, ecx
    0040c2ecxor edx, edx
    0040c2eemov r8, [rsp+56]
    0040c2f3mov r9l, ebx
    0040c2f6mov [rsp+32], r13l
    0040c2fbcall fn_40bf50
    0040c300mov edi, eax
    0040c302mov rcx, [rsp+48]
    0040c307mov edx, edi
    0040c309xor r8, r8
    0040c30ccall fn_40cf30
    0040c311test edi, edi
    0040c313jle 0x40c33f
    0040c315mov rax, [rsp+48]
    0040c31amov rcx, [rax]
    0040c31dmov edx, edi
    0040c31fmov r8, [rsp+56]
    0040c324mov r9l, ebx
    0040c327mov [rsp+32], r13l
    0040c32ccall fn_40bf50
    0040c331mov rax, [rsp+48]
    0040c336mov rax, [rax]
    0040c339mov [rax-12], si
    0040c33djmp 0x40c349
    0040c33f
    0040c33floc_40c33f:
    0040c33fmov rcx, [rsp+48]
    0040c344call fn_40bd40
    0040c349
    0040c349loc_40c349:
    0040c349add rsp, 72
    0040c34dpop rbx
    0040c34epop rsi
    0040c34fpop rdi
    0040c350pop r13
    0040c352ret
    0040c2b0
    0040c353
    0040c353 // align 0x10
    0040c360
    0040c360fn_40c360:
    0040c360push rbp
    0040c361push r13
    0040c363push rdi
    0040c364push rsi
    0040c365push rbx
    0040c366sub rsp, 48
    0040c36amov rbp, rsp
    0040c36dmov rbx, rcx
    0040c370mov r13, rdx
    0040c373mov rsi, r13
    0040c376test rsi, rsi
    0040c379je 0x40c3b4
    0040c37bcmp [r13-8], 0
    0040c380jge 0x40c3a6
    0040c382mov edi, [r13-4]
    0040c386mov ecx, edi
    0040c388call fn_40bbc0
    0040c38dmov rsi, rax
    0040c390mov rcx, r13
    0040c393mov rdx, rsi
    0040c396mov r8l, edi
    0040c399add r8l, r8l
    0040c39cmovsxd r8, r8l
    0040c39fcall fn_405ac0
    0040c3a4jmp 0x40c3b4
    0040c3a6
    0040c3a6loc_40c3a6:
    0040c3a6lea rax, [rsi-16]
    0040c3aamov ecx, 1
    0040c3aflock xadd [rax+8], ecx
    0040c3b4
    0040c3b4loc_40c3b4:
    0040c3b4mov rax, [rbx]
    0040c3b7mov [rbp+40], rax
    0040c3bbmov [rbx], rsi
    0040c3belea rcx, [rbp+40]
    0040c3c2call fn_40bcf0
    0040c3c7lea rsp, [rbp+48]
    0040c3cbpop rbx
    0040c3ccpop rsi
    0040c3cdpop rdi
    0040c3cepop r13
    0040c3d0pop rbp
    0040c3d1ret
    0040c360
    0040c3d2
    0040c3d2 // align 0x10
    0040c3e0
    0040c3e0fn_40c3e0:
    0040c3e0sub rsp, 40
    0040c3e4test rdx, rdx
    0040c3e7je 0x40c3ff
    0040c3e9lea rax, [rdx-16]
    0040c3edcmp [rax+8], 0
    0040c3f1jl 0x40c3ff
    0040c3f3mov r8l, 1
    0040c3f9lock xadd [rax+8], r8l
    0040c3ff
    0040c3ffloc_40c3ff:
    0040c3ffmov rax, [rcx]
    0040c402mov [rcx], rdx
    0040c405test rax, rax
    0040c408je 0x40c42c
    0040c40alea rax, [rax-16]
    0040c40ecmp [rax+8], 0
    0040c412jle 0x40c42c
    0040c414or edx, -1
    0040c417mov ecx, edx
    0040c419lock xadd [rax+8], edx
    0040c41eadd ecx, edx
    0040c420test ecx, ecx
    0040c422jne 0x40c42c
    0040c424mov rcx, rax
    0040c427call fn_405730
    0040c42c
    0040c42cloc_40c42c:
    0040c42cadd rsp, 40
    0040c430ret
    0040c3e0
    0040c431
    0040c431 // align 0x10
    0040c440
    0040c440fn_40c440:
    0040c440sub rsp, 40
    0040c444cmp [rcx], rdx
    0040c447je 0x40c47d
    0040c449test rdx, rdx
    0040c44cjne 0x40c455
    0040c44ecall fn_40bd90
    0040c453jmp 0x40c47d
    0040c455
    0040c455loc_40c455:
    0040c455mov eax, [rdx-4]
    0040c458shr eax, 31
    0040c45badd eax, [rdx-4]
    0040c45esar eax, 1
    0040c461test eax, eax
    0040c463jne 0x40c46c
    0040c465call fn_40bd90
    0040c46ajmp 0x40c47d
    0040c46c
    0040c46cloc_40c46c:
    0040c46cmov r8l, eax
    0040c46fcall SysReAllocStringLen
    0040c474test eax, eax
    0040c476jne 0x40c47d
    0040c478call fn_40bca0
    0040c47d
    0040c47dloc_40c47d:
    0040c47dadd rsp, 40
    0040c481ret
    0040c440
    0040c482
    0040c482 // align 0x10
    0040c490
    0040c490fn_40c490:
    0040c490sub rsp, 40
    0040c494call fn_40c440
    0040c499add rsp, 40
    0040c49dret
    0040c490
    0040c49e
    0040c49e // align 0x10
    0040c4a0
    0040c4a0fn_40c4a0:
    0040c4a0push rbp
    0040c4a1push r13
    0040c4a3push rdi
    0040c4a4push rsi
    0040c4a5push rbx
    0040c4a6sub rsp, 48
    0040c4aamov rbp, rsp
    0040c4admov rbx, rcx
    0040c4b0mov rsi, rdx
    0040c4b3mov rdi, rsi
    0040c4b6test rdi, rdi
    0040c4b9je 0x40c4fe
    0040c4bbmov rax, rdi
    0040c4becmp [rax-8], 0
    0040c4c2jge 0x40c4f0
    0040c4c4mov r13l, [rax-4]
    0040c4c8mov ecx, r13l
    0040c4cbmovzx rdx, [rax-12]
    0040c4d0call fn_40bc20
    0040c4d5mov rdi, rax
    0040c4d8mov rcx, rsi
    0040c4dbcall fn_40ce10
    0040c4e0mov rcx, rax
    0040c4e3mov rdx, rdi
    0040c4e6movsxd r8, r13l
    0040c4e9call fn_405ac0
    0040c4eejmp 0x40c4fe
    0040c4f0
    0040c4f0loc_40c4f0:
    0040c4f0lea rax, [rax-16]
    0040c4f4mov ecx, 1
    0040c4f9lock xadd [rax+8], ecx
    0040c4fe
    0040c4feloc_40c4fe:
    0040c4femov rax, [rbx]
    0040c501mov [rbp+40], rax
    0040c505mov [rbx], rdi
    0040c508lea rcx, [rbp+40]
    0040c50ccall fn_40bd40
    0040c511lea rsp, [rbp+48]
    0040c515pop rbx
    0040c516pop rsi
    0040c517pop rdi
    0040c518pop r13
    0040c51apop rbp
    0040c51bret
    0040c4a0
    0040c51c
    0040c51c // align 0x10
    0040c520
    0040c520fn_40c520:
    0040c520push rbp
    0040c521push rsi
    0040c522push rbx
    0040c523sub rsp, 48
    0040c527mov rbp, rsp
    0040c52amov rbx, rcx
    0040c52dmov rsi, rdx
    0040c530mov [rbp+40], rsi
    0040c534cmp [rbp+40], 0
    0040c539je 0x40c544
    0040c53bmov rcx, [rbp+40]
    0040c53fcall fn_40bee0
    0040c544
    0040c544loc_40c544:
    0040c544mov rax, [rbx]
    0040c547mov [rbp+40], rax
    0040c54bmov [rbx], rsi
    0040c54elea rcx, [rbp+40]
    0040c552call fn_40bd40
    0040c557lea rsp, [rbp+48]
    0040c55bpop rbx
    0040c55cpop rsi
    0040c55dpop rbp
    0040c55eret
    0040c520
    0040c55f
    0040c55f // align 0x10
    0040c560
    0040c560fn_40c560:
    0040c560xor eax, eax
    0040c562test rcx, rcx
    0040c565je 0x40c56a
    0040c567mov eax, [rcx-4]
    0040c56a
    0040c56aloc_40c56a:
    0040c56aret
    0040c560
    0040c56b
    0040c56b // align 0x10
    0040c570
    0040c570fn_40c570:
    0040c570xor eax, eax
    0040c572test rcx, rcx
    0040c575je 0x40c57a
    0040c577mov eax, [rcx-4]
    0040c57a
    0040c57aloc_40c57a:
    0040c57aret
    0040c570
    0040c57b
    0040c57b // align 0x10
    0040c580
    0040c580fn_40c580:
    0040c580xor eax, eax
    0040c582test rcx, rcx
    0040c585je 0x40c595
    0040c587jmp 0x40c58c
    0040c589
    0040c589loc_40c589:
    0040c589add eax, 1
    0040c58c
    0040c58cloc_40c58c:
    0040c58cmovsxd rdx, eax
    0040c58fcmp [rcx+rdx], 0
    0040c593jne 0x40c589
    0040c595
    0040c595loc_40c595:
    0040c595ret
    0040c580
    0040c596
    0040c596 // align 0x10
    0040c5a0
    0040c5a0fn_40c5a0:
    0040c5a0xor eax, eax
    0040c5a2test rcx, rcx
    0040c5a5je 0x40c5b6
    0040c5a7jmp 0x40c5ac
    0040c5a9
    0040c5a9loc_40c5a9:
    0040c5a9add eax, 1
    0040c5ac
    0040c5acloc_40c5ac:
    0040c5acmovsxd rdx, eax
    0040c5afcmp [rcx+2*rdx], 0
    0040c5b4jne 0x40c5a9
    0040c5b6
    0040c5b6loc_40c5b6:
    0040c5b6ret
    0040c5a0
    0040c5b7
    0040c5b7 // align 0x10
    0040c5c0
    0040c5c0fn_40c5c0:
    0040c5c0push rdi
    0040c5c1push rsi
    0040c5c2push rbx
    0040c5c3sub rsp, 32
    0040c5c7mov rbx, rcx
    0040c5camov rax, [rbx]
    0040c5cdmov rsi, rax
    0040c5d0test rsi, rsi
    0040c5d3je 0x40c615
    0040c5d5mov rsi, rax
    0040c5d8lea rdi, [rax-16]
    0040c5dccmp [rdi+8], 1
    0040c5e0je 0x40c615
    0040c5e2mov ecx, [rdi+12]
    0040c5e5call fn_40bbc0
    0040c5eamov rsi, rax
    0040c5edmov rcx, [rbx]
    0040c5f0call fn_40d710
    0040c5f5mov rcx, rax
    0040c5f8mov rdx, rsi
    0040c5fbmov r8l, [rdi+12]
    0040c5ffadd r8l, r8l
    0040c602movsxd r8, r8l
    0040c605call fn_405ac0
    0040c60amov rcx, rbx
    0040c60dcall fn_40bcf0
    0040c612mov [rbx], rsi
    0040c615
    0040c615loc_40c615:
    0040c615mov rax, rsi
    0040c618add rsp, 32
    0040c61cpop rbx
    0040c61dpop rsi
    0040c61epop rdi
    0040c61fret
    0040c5c0
    0040c620
    0040c620fn_40c620:
    0040c620push rdi
    0040c621push rsi
    0040c622push rbx
    0040c623sub rsp, 32
    0040c627mov rbx, rcx
    0040c62amov rax, [rbx]
    0040c62dmov rsi, rax
    0040c630test rsi, rsi
    0040c633je 0x40c674
    0040c635mov rsi, rax
    0040c638lea rdi, [rax-16]
    0040c63ccmp [rdi+8], 1
    0040c640je 0x40c674
    0040c642mov ecx, [rdi+12]
    0040c645movzx rdx, [rdi+4]
    0040c64acall fn_40bc20
    0040c64fmov rsi, rax
    0040c652mov rcx, [rbx]
    0040c655call fn_40ce10
    0040c65amov rcx, rax
    0040c65dmov rdx, rsi
    0040c660movsxd r8, [rdi+12]
    0040c664call fn_405ac0
    0040c669mov rcx, rbx
    0040c66ccall fn_40bd40
    0040c671mov [rbx], rsi
    0040c674
    0040c674loc_40c674:
    0040c674mov rax, rsi
    0040c677add rsp, 32
    0040c67bpop rbx
    0040c67cpop rsi
    0040c67dpop rdi
    0040c67eret
    0040c620
    0040c67f
    0040c67f // align 0x10
    0040c680
    0040c680fn_40c680:
    0040c680sub rsp, 40
    0040c684call fn_40c5c0
    0040c689add rsp, 40
    0040c68dret
    0040c680
    0040c68e
    0040c68e // align 0x10
    0040c690
    0040c690fn_40c690:
    0040c690sub rsp, 40
    0040c694call fn_40c620
    0040c699add rsp, 40
    0040c69dret
    0040c690
    0040c69e
    0040c69e // align 0x10
    0040c6a0
    0040c6a0fn_40c6a0:
    0040c6a0sub rsp, 40
    0040c6a4call fn_40c5c0
    0040c6a9add rsp, 40
    0040c6adret
    0040c6a0
    0040c6ae
    0040c6ae // align 0x10
    0040c6b0
    0040c6b0fn_40c6b0:
    0040c6b0xor eax, eax
    0040c6b2jmp 0x40c6e6
    0040c6b4
    0040c6b4loc_40c6b4:
    0040c6b4mov r9l, [rcx]
    0040c6b7cmp r9l, [rdx]
    0040c6bajne 0x40c6ec
    0040c6bccmp r8, 8
    0040c6c0jl 0x40c6cc
    0040c6c2mov r9l, [rcx+4]
    0040c6c6cmp r9l, [rdx+4]
    0040c6caje 0x40c6da
    0040c6cc
    0040c6ccloc_40c6cc:
    0040c6ccadd rcx, 4
    0040c6d0add rdx, 4
    0040c6d4sub r8, 4
    0040c6d8jmp 0x40c6ec
    0040c6da
    0040c6daloc_40c6da:
    0040c6daadd rcx, 8
    0040c6deadd rdx, 8
    0040c6e2sub r8, 8
    0040c6e6
    0040c6e6loc_40c6e6:
    0040c6e6cmp r8, 4
    0040c6eajge 0x40c6b4
    0040c6ec
    0040c6ecloc_40c6ec:
    0040c6ecnop
    0040c6edtest r8, r8
    0040c6f0je 0x40c741
    0040c6f2movzx rax, [rcx]
    0040c6f6movzx r9, [rdx]
    0040c6fasub eax, r9l
    0040c6fdtest eax, eax
    0040c6ffjne 0x40c741
    0040c701cmp r8, 1
    0040c705je 0x40c741
    0040c707movzx rax, [rcx+1]
    0040c70cmovzx r9, [rdx+1]
    0040c711sub eax, r9l
    0040c714test eax, eax
    0040c716jne 0x40c741
    0040c718cmp r8, 2
    0040c71cje 0x40c741
    0040c71emovzx rax, [rcx+2]
    0040c723movzx r9, [rdx+2]
    0040c728sub eax, r9l
    0040c72btest eax, eax
    0040c72djne 0x40c741
    0040c72fcmp r8, 3
    0040c733je 0x40c741
    0040c735movzx rax, [rcx+3]
    0040c73amovzx rcx, [rdx+3]
    0040c73fsub eax, ecx
    0040c741
    0040c741loc_40c741:
    0040c741ret
    0040c6b0
    0040c742
    0040c742 // align 0x10
    0040c750
    0040c750fn_40c750:
    0040c750sub rsp, 40
    0040c754mov rax, rdx
    0040c757mov r8, rcx
    0040c75amovzx r9, [rdx]
    0040c75eadd r9l, 1
    0040c762mov r9l, r9l
    0040c765mov rcx, rax
    0040c768mov rdx, r8
    0040c76bmov r8, r9
    0040c76ecall fn_405ac0
    0040c773add rsp, 40
    0040c777ret
    0040c750
    0040c778
    0040c778 // align 0x10
    0040c780
    0040c780fn_40c780:
    0040c780push rbp
    0040c781push rdi
    0040c782push rsi
    0040c783sub rsp, 272
    0040c78amov rbp, rsp
    0040c78dmov rax, rcx
    0040c790mov rsi, rdx
    0040c793movzx rcx, [rsi]
    0040c797lea rcx, [rcx+1]
    0040c79blea rdi, [rbp+16]
    0040c79frep movsb [rdi], [rsi]
    0040c7a1mov [rbp+8], rax
    0040c7a5mov rcx, [rbp+8]
    0040c7a9movzx rcx, [rcx]
    0040c7adlea rdx, [rbp+16]
    0040c7b1mov [rbp], rdx
    0040c7b5mov rdx, [rbp]
    0040c7b9movzx rdx, [rdx]
    0040c7bdmov r9l, ecx
    0040c7c0add r9l, edx
    0040c7c3cmp r9l, r8l
    0040c7c6jle 0x40c7cd
    0040c7c8mov edx, r8l
    0040c7cbsub edx, ecx
    0040c7cd
    0040c7cdloc_40c7cd:
    0040c7cdmov r8l, ecx
    0040c7d0add r8b, dl
    0040c7d3mov [rax], r8b
    0040c7d6mov r8l, 1
    0040c7dcmov r9l, edx
    0040c7dfmov edx, r8l
    0040c7e2cmp edx, r9l
    0040c7e5jg 0x40c813
    0040c7e7sub r9l, r8l
    0040c7eaadd r9l, 1
    0040c7eelea r8, [rbp+17]
    0040c7f2
    0040c7f2loc_40c7f2:
    0040c7f2mov r10l, ecx
    0040c7f5add r10l, edx
    0040c7f8movsxd r10, r10l
    0040c7fbmovzx r11, [r8]
    0040c7ffmov [rax+r10], r11b
    0040c803add edx, 1
    0040c806add r8, 1
    0040c80asub r9l, 1
    0040c80etest r9l, r9l
    0040c811jne 0x40c7f2
    0040c813
    0040c813loc_40c813:
    0040c813nop
    0040c814lea rsp, [rbp+272]
    0040c81bpop rsi
    0040c81cpop rdi
    0040c81dpop rbp
    0040c81eret
    0040c780
    0040c81f
    0040c81f // align 0x10
    0040c820
    0040c820fn_40c820:
    0040c820sub rsp, 40
    0040c824mov [rsp+56], dl
    0040c828lea rdx, [rsp+56]
    0040c82dmov eax, 1
    0040c832mov r9l, r8l
    0040c835mov r8l, eax
    0040c838call fn_40c080
    0040c83dadd rsp, 40
    0040c841ret
    0040c820
    0040c842
    0040c842 // align 0x10
    0040c850
    0040c850fn_40c850:
    0040c850sub rsp, 40
    0040c854xor eax, eax
    0040c856test rdx, rdx
    0040c859je 0x40c877
    0040c85bmov rax, rdx
    0040c85ejmp 0x40c864
    0040c860
    0040c860loc_40c860:
    0040c860add rax, 2
    0040c864
    0040c864loc_40c864:
    0040c864cmp [rax], 0
    0040c868jne 0x40c860
    0040c86asub rax, rdx
    0040c86dsar rax, 1
    0040c871jns 0x40c877
    0040c873adc rax, 0
    0040c877
    0040c877loc_40c877:
    0040c877mov r9l, r8l
    0040c87amov r8l, eax
    0040c87dcall fn_40c2b0
    0040c882add rsp, 40
    0040c886ret
    0040c850
    0040c887
    0040c887 // align 0x10
    0040c890
    0040c890fn_40c890:
    0040c890push rbp
    0040c891push rdi
    0040c892push rsi
    0040c893sub rsp, 288
    0040c89amov rbp, rsp
    0040c89dmov rax, rcx
    0040c8a0mov rsi, rdx
    0040c8a3movzx rcx, [rsi]
    0040c8a7lea rcx, [rcx+1]
    0040c8ablea rdi, [rbp+32]
    0040c8afrep movsb [rdi], [rsi]
    0040c8b1mov rcx, rax
    0040c8b4lea rdx, [rbp+33]
    0040c8b8movzx rax, [rbp+32]
    0040c8bdmov r9l, r8l
    0040c8c0mov r8l, eax
    0040c8c3call fn_40c080
    0040c8c8lea rsp, [rbp+288]
    0040c8cfpop rsi
    0040c8d0pop rdi
    0040c8d1pop rbp
    0040c8d2ret
    0040c890
    0040c8d3
    0040c8d3 // align 0x10
    0040c8e0
    0040c8e0fn_40c8e0:
    0040c8e0sub rsp, 40
    0040c8e4xor eax, eax
    0040c8e6test rdx, rdx
    0040c8e9je 0x40c8f7
    0040c8ebmov eax, [rdx-4]
    0040c8eeshr eax, 31
    0040c8f1add eax, [rdx-4]
    0040c8f4sar eax, 1
    0040c8f7
    0040c8f7loc_40c8f7:
    0040c8f7mov r9l, r8l
    0040c8famov r8l, eax
    0040c8fdcall fn_40c2b0
    0040c902add rsp, 40
    0040c906ret
    0040c8e0
    0040c907
    0040c907 // align 0x10
    0040c910
    0040c910fn_40c910:
    0040c910push r14
    0040c912push r13
    0040c914push rdi
    0040c915push rsi
    0040c916push rbx
    0040c917sub rsp, 48
    0040c91bmov [rsp+40], rcx
    0040c920mov rbx, rdx
    0040c923mov rcx, rbx
    0040c926test rcx, rcx
    0040c929je 0x40c9f5
    0040c92fmov rax, [rsp+40]
    0040c934mov rax, [rax]
    0040c937test rax, rax
    0040c93ajne 0x40c94e
    0040c93cmov rcx, [rsp+40]
    0040c941mov rdx, rbx
    0040c944call fn_40c4a0
    0040c949jmp 0x40c9f5
    0040c94e
    0040c94eloc_40c94e:
    0040c94emov esi, [rax-4]
    0040c951mov edi, [rcx-4]
    0040c954mov r13l, esi
    0040c957add r13l, edi
    0040c95amov eax, esi
    0040c95cand eax, edi
    0040c95emov ecx, r13l
    0040c961not ecx
    0040c963mov edx, esi
    0040c965or edx, edi
    0040c967and ecx, edx
    0040c969or eax, ecx
    0040c96btest eax, 0xffffffff80000000
    0040c971je 0x40c978
    0040c973call fn_4085f0
    0040c978
    0040c978loc_40c978:
    0040c978mov rcx, [rsp+40]
    0040c97dcall fn_40c690
    0040c982mov ecx, [rip+0x4e5c0]
    0040c988lea r14, [rax+rcx-1]
    0040c98dmov rcx, [rsp+40]
    0040c992mov edx, r13l
    0040c995mov rax, [rsp+40]
    0040c99amov rax, [rax]
    0040c99dmovzx r8, [rax-12]
    0040c9a2call fn_40cf30
    0040c9a7mov eax, [rip+0x4e59b]
    0040c9adlea rcx, [rbx+rax-1]
    0040c9b2cmp r14, rcx
    0040c9b5jne 0x40c9ce
    0040c9b7mov rcx, [rsp+40]
    0040c9bccall fn_40c690
    0040c9c1mov ecx, [rip+0x4e581]
    0040c9c7lea r14, [rax+rcx-1]
    0040c9ccjmp 0x40c9d3
    0040c9ce
    0040c9celoc_40c9ce:
    0040c9celea r14, [rbx+rax-1]
    0040c9d3
    0040c9d3loc_40c9d3:
    0040c9d3mov rcx, [rsp+40]
    0040c9d8call fn_40c690
    0040c9ddmov rcx, r14
    0040c9e0add esi, [rip+0x4e562]
    0040c9e6mov esi, esi
    0040c9e8lea rdx, [rax+rsi-1]
    0040c9edmov r8l, edi
    0040c9f0call fn_405ac0
    0040c9f5
    0040c9f5loc_40c9f5:
    0040c9f5add rsp, 48
    0040c9f9pop rbx
    0040c9fapop rsi
    0040c9fbpop rdi
    0040c9fcpop r13
    0040c9fepop r14
    0040ca00ret
    0040c910
    0040ca01
    0040ca01 // align 0x10
    0040ca10
    0040ca10fn_40ca10:
    0040ca10push r14
    0040ca12push r13
    0040ca14push rdi
    0040ca15push rsi
    0040ca16push rbx
    0040ca17sub rsp, 48
    0040ca1bmov [rsp+32], rcx
    0040ca20mov [rsp+40], rdx
    0040ca25mov rbx, r8
    0040ca28mov rax, [rsp+40]
    0040ca2dtest rax, rax
    0040ca30jne 0x40ca44
    0040ca32mov rcx, [rsp+32]
    0040ca37mov rdx, rbx
    0040ca3acall fn_40c4a0
    0040ca3fjmp 0x40cb28
    0040ca44
    0040ca44loc_40ca44:
    0040ca44mov r14, rbx
    0040ca47test r14, r14
    0040ca4ajne 0x40ca60
    0040ca4cmov rcx, [rsp+32]
    0040ca51mov rdx, [rsp+40]
    0040ca56call fn_40c4a0
    0040ca5bjmp 0x40cb28
    0040ca60
    0040ca60loc_40ca60:
    0040ca60mov rcx, [rsp+32]
    0040ca65mov rcx, [rcx]
    0040ca68cmp rcx, rax
    0040ca6bjne 0x40ca7f
    0040ca6dmov rcx, [rsp+32]
    0040ca72mov rdx, rbx
    0040ca75call fn_40c910
    0040ca7ajmp 0x40cb28
    0040ca7f
    0040ca7floc_40ca7f:
    0040ca7fcmp rcx, r14
    0040ca82jne 0x40cb0c
    0040ca88mov edi, [rax-4]
    0040ca8bmov r13l, [r14-4]
    0040ca8fmov esi, edi
    0040ca91add esi, r13l
    0040ca94mov eax, edi
    0040ca96and eax, r13l
    0040ca99mov ecx, esi
    0040ca9bnot ecx
    0040ca9dmov edx, edi
    0040ca9for edx, r13l
    0040caa2and ecx, edx
    0040caa4or eax, ecx
    0040caa6test eax, 0xffffffff80000000
    0040caacje 0x40cab3
    0040caaecall fn_4085f0
    0040cab3
    0040cab3loc_40cab3:
    0040cab3movzx rax, [r14-12]
    0040cab8mov ecx, esi
    0040cabamov edx, eax
    0040cabccall fn_40bc20
    0040cac1mov rsi, rax
    0040cac4mov rcx, [rsp+40]
    0040cac9call fn_40ce10
    0040cacemov r14, rsi
    0040cad1mov edi, edi
    0040cad3mov rcx, rax
    0040cad6mov rdx, r14
    0040cad9mov r8, rdi
    0040cadccall fn_405ac0
    0040cae1mov rcx, rbx
    0040cae4call fn_40ce10
    0040cae9mov rcx, rax
    0040caeclea rdx, [r14+rdi]
    0040caf0mov r8l, r13l
    0040caf3call fn_405ac0
    0040caf8mov rcx, [rsp+32]
    0040cafdcall fn_40bd40
    0040cb02mov rax, [rsp+32]
    0040cb07mov [rax], rsi
    0040cb0ajmp 0x40cb28
    0040cb0c
    0040cb0cloc_40cb0c:
    0040cb0cmov rcx, [rsp+32]
    0040cb11mov rdx, [rsp+40]
    0040cb16call fn_40c4a0
    0040cb1bmov rcx, [rsp+32]
    0040cb20mov rdx, rbx
    0040cb23call fn_40c910
    0040cb28
    0040cb28loc_40cb28:
    0040cb28add rsp, 48
    0040cb2cpop rbx
    0040cb2dpop rsi
    0040cb2epop rdi
    0040cb2fpop r13
    0040cb31pop r14
    0040cb33ret
    0040ca10
    0040cb34
    0040cb34 // align 0x10
    0040cb40
    0040cb40fn_40cb40:
    0040cb40push r14
    0040cb42push r13
    0040cb44push rdi
    0040cb45push rsi
    0040cb46push rbx
    0040cb47sub rsp, 64
    0040cb4bmov [rsp+40], rcx
    0040cb50mov ebx, edx
    0040cb52mov [rsp+48], r8
    0040cb57xor esi, esi
    0040cb59xor eax, eax
    0040cb5bmov ecx, ebx
    0040cb5dsub ecx, 1
    0040cb60mov edx, eax
    0040cb62cmp edx, ecx
    0040cb64mov [rsp+60], edx
    0040cb68jg 0x40cba0
    0040cb6asub ecx, eax
    0040cb6cadd ecx, 1
    0040cb6f
    0040cb6floc_40cb6f:
    0040cb6fmov eax, [rsp+60]
    0040cb73movsxd rax, eax
    0040cb76mov rdx, [rsp+48]
    0040cb7bmov rax, [rdx+8*rax]
    0040cb7ftest rax, rax
    0040cb82je 0x40cb8e
    0040cb84movzx rsi, [rax-12]
    0040cb89test si, si
    0040cb8cjne 0x40cba0
    0040cb8e
    0040cb8eloc_40cb8e:
    0040cb8emov eax, [rsp+60]
    0040cb92add eax, 1
    0040cb95mov [rsp+60], eax
    0040cb99sub ecx, 1
    0040cb9ctest ecx, ecx
    0040cb9ejne 0x40cb6f
    0040cba0
    0040cba0loc_40cba0:
    0040cba0nop
    0040cba1xor r13, r13
    0040cba4xor r14, r14
    0040cba7xor eax, eax
    0040cba9mov edi, ebx
    0040cbabsub edi, 1
    0040cbaemov ecx, eax
    0040cbb0cmp ecx, edi
    0040cbb2mov [rsp+60], ecx
    0040cbb6jg 0x40cc06
    0040cbb8sub edi, eax
    0040cbbaadd edi, 1
    0040cbbd
    0040cbbdloc_40cbbd:
    0040cbbdmov eax, [rsp+60]
    0040cbc1movsxd rax, eax
    0040cbc4mov rcx, [rsp+48]
    0040cbc9mov rax, [rcx+8*rax]
    0040cbcdtest rax, rax
    0040cbd0je 0x40cbf4
    0040cbd2mov rcx, [rsp+40]
    0040cbd7cmp rax, [rcx]
    0040cbdajne 0x40cbe6
    0040cbdcmov ecx, [rsp+60]
    0040cbe0test ecx, ecx
    0040cbe2sete r13b
    0040cbe6
    0040cbe6loc_40cbe6:
    0040cbe6add r14l, [rax-4]
    0040cbeatest r14l, r14l
    0040cbedjge 0x40cbf4
    0040cbefcall fn_4085f0
    0040cbf4
    0040cbf4loc_40cbf4:
    0040cbf4mov eax, [rsp+60]
    0040cbf8add eax, 1
    0040cbfbmov [rsp+60], eax
    0040cbffsub edi, 1
    0040cc02test edi, edi
    0040cc04jne 0x40cbbd
    0040cc06
    0040cc06loc_40cc06:
    0040cc06nop
    0040cc07test r13b, r13b
    0040cc0aje 0x40cc36
    0040cc0cmov rax, [rsp+40]
    0040cc11mov rax, [rax]
    0040cc14mov edi, [rax-4]
    0040cc17mov rcx, [rsp+40]
    0040cc1cmov edx, r14l
    0040cc1fmov r8l, esi
    0040cc22call fn_40cf30
    0040cc27mov rax, [rsp+40]
    0040cc2cmov rsi, [rax]
    0040cc2fmov eax, 1
    0040cc34jmp 0x40cc47
    0040cc36
    0040cc36loc_40cc36:
    0040cc36mov ecx, r14l
    0040cc39mov edx, esi
    0040cc3bcall fn_40bc20
    0040cc40mov rsi, rax
    0040cc43xor eax, eax
    0040cc45xor edi, edi
    0040cc47
    0040cc47loc_40cc47:
    0040cc47mov r14l, ebx
    0040cc4asub r14l, 1
    0040cc4emov ecx, eax
    0040cc50cmp ecx, r14l
    0040cc53mov [rsp+60], ecx
    0040cc57jg 0x40cca2
    0040cc59sub r14l, eax
    0040cc5cadd r14l, 1
    0040cc60
    0040cc60loc_40cc60:
    0040cc60mov eax, [rsp+60]
    0040cc64movsxd rax, eax
    0040cc67mov rcx, [rsp+48]
    0040cc6cmov rax, [rcx+8*rax]
    0040cc70test rax, rax
    0040cc73je 0x40cc8e
    0040cc75mov rbx, rax
    0040cc78mov rcx, rax
    0040cc7bmovsxd rax, edi
    0040cc7elea rdx, [rsi+rax]
    0040cc82movsxd r8, [rbx-4]
    0040cc86call fn_405ac0
    0040cc8badd edi, [rbx-4]
    0040cc8e
    0040cc8eloc_40cc8e:
    0040cc8emov eax, [rsp+60]
    0040cc92add eax, 1
    0040cc95mov [rsp+60], eax
    0040cc99sub r14l, 1
    0040cc9dtest r14l, r14l
    0040cca0jne 0x40cc60
    0040cca2
    0040cca2loc_40cca2:
    0040cca2nop
    0040cca3test r13b, r13b
    0040cca6jne 0x40ccc5
    0040cca8mov rax, [rsp+40]
    0040ccadcmp [rax], 0
    0040ccb1je 0x40ccbd
    0040ccb3mov rcx, [rsp+40]
    0040ccb8call fn_40bd40
    0040ccbd
    0040ccbdloc_40ccbd:
    0040ccbdmov rax, [rsp+40]
    0040ccc2mov [rax], rsi
    0040ccc5
    0040ccc5loc_40ccc5:
    0040ccc5add rsp, 64
    0040ccc9pop rbx
    0040cccapop rsi
    0040cccbpop rdi
    0040ccccpop r13
    0040cccepop r14
    0040ccd0ret
    0040cb40
    0040ccd1
    0040ccd1 // align 0x10
    0040cce0
    0040cce0fn_40cce0:
    0040cce0push rbp
    0040cce1push rbx
    0040cce2sub rsp, 40
    0040cce6mov rbp, rsp
    0040cce9mov [rbp+80], r8
    0040ccedmov [rbp+88], r9
    0040ccf1mov [rbp+64], rcx
    0040ccf5mov [rbp+72], edx
    0040ccf8lea rbx, [rbp+80]
    0040ccfcmov rcx, [rbp+64]
    0040cd00mov edx, [rbp+72]
    0040cd03mov r8, rbx
    0040cd06call fn_40cb40
    0040cd0blea rsp, [rbp+40]
    0040cd0fpop rbx
    0040cd10pop rbp
    0040cd11ret
    0040cce0
    0040cd12
    0040cd12 // align 0x10
    0040cd20
    0040cd20fn_40cd20:
    0040cd20push r14
    0040cd22push r13
    0040cd24push rdi
    0040cd25push rsi
    0040cd26push rbx
    0040cd27sub rsp, 32
    0040cd2bmov rbx, rdx
    0040cd2emov rax, rcx
    0040cd31mov rdx, rbx
    0040cd34cmp rax, rdx
    0040cd37jne 0x40cd3d
    0040cd39xor eax, eax
    0040cd3bjmp 0x40cdb3
    0040cd3d
    0040cd3dloc_40cd3d:
    0040cd3dtest rax, rax
    0040cd40jne 0x40cd49
    0040cd42mov eax, [rdx-4]
    0040cd45neg eax
    0040cd47jmp 0x40cdb3
    0040cd49
    0040cd49loc_40cd49:
    0040cd49test rdx, rdx
    0040cd4cjne 0x40cd53
    0040cd4emov eax, [rax-4]
    0040cd51jmp 0x40cdb3
    0040cd53
    0040cd53loc_40cd53:
    0040cd53mov edi, [rax-4]
    0040cd56mov r13l, [rdx-4]
    0040cd5amov esi, edi
    0040cd5ccmp esi, r13l
    0040cd5fjle 0x40cd64
    0040cd61mov esi, r13l
    0040cd64
    0040cd64loc_40cd64:
    0040cd64call fn_40ce10
    0040cd69mov r14, rax
    0040cd6cmov rcx, rbx
    0040cd6fcall fn_40ce10
    0040cd74mov rcx, rax
    0040cd77test esi, esi
    0040cd79jle 0x40cdad
    0040cd7b
    0040cd7bloc_40cd7b:
    0040cd7bmovzx rax, [r14]
    0040cd7fmovzx rdx, [rcx]
    0040cd83sub eax, edx
    0040cd85test eax, eax
    0040cd87jne 0x40cdb3
    0040cd89cmp esi, 1
    0040cd8cje 0x40cdad
    0040cd8emovzx rax, [r14+1]
    0040cd93movzx rdx, [rcx+1]
    0040cd98sub eax, edx
    0040cd9atest eax, eax
    0040cd9cjne 0x40cdb3
    0040cd9eadd r14, 2
    0040cda2add rcx, 2
    0040cda6sub esi, 2
    0040cda9test esi, esi
    0040cdabjg 0x40cd7b
    0040cdad
    0040cdadloc_40cdad:
    0040cdadnop
    0040cdaemov eax, edi
    0040cdb0sub eax, r13l
    0040cdb3
    0040cdb3loc_40cdb3:
    0040cdb3add rsp, 32
    0040cdb7pop rbx
    0040cdb8pop rsi
    0040cdb9pop rdi
    0040cdbapop r13
    0040cdbcpop r14
    0040cdberet
    0040cd20
    0040cdbf
    0040cdbf // align 0x10
    0040cdc0
    0040cdc0fn_40cdc0:
    0040cdc0sub rsp, 40
    0040cdc4call fn_40cd20
    0040cdc9add rsp, 40
    0040cdcdret
    0040cdc0
    0040cdce
    0040cdce 00 00 ..
    0040cdd0 e4 04 01 00 ff ff ff ff 12 00 00 00 00 00 00 00 ................
    0040cde0 ff ff 01 00 ff ff ff ff 00 00 00 00 00 00 00 00 ................
    0040cdf0 e4 04 01 00 ff ff ff ff 12 00 00 00 00 00 00 00 ................
    0040ce00 ff ff 02 00 ff ff ff ff 00 00 00 00 00 00 00 cc ................
    0040ce10
    0040ce10fn_40ce10:
    0040ce10mov rax, rcx
    0040ce13test rax, rax
    0040ce16jne 0x40ce23
    0040ce18mov rax, [rip+0x4e3a9]
    0040ce1flea rax, [rax+16]
    0040ce23
    0040ce23loc_40ce23:
    0040ce23ret
    0040ce10
    0040ce24
    0040ce24 // align 0x10
    0040ce30
    0040ce30fn_40ce30:
    0040ce30push rbx
    0040ce31sub rsp, 32
    0040ce35mov rbx, rcx
    0040ce38mov eax, r8l
    0040ce3bxor ecx, ecx
    0040ce3dtest rdx, rdx
    0040ce40je 0x40ce45
    0040ce42mov ecx, [rdx-4]
    0040ce45
    0040ce45loc_40ce45:
    0040ce45cmp eax, 1
    0040ce48jge 0x40ce4e
    0040ce4axor eax, eax
    0040ce4cjmp 0x40ce57
    0040ce4e
    0040ce4eloc_40ce4e:
    0040ce4esub eax, 1
    0040ce51cmp eax, ecx
    0040ce53jle 0x40ce57
    0040ce55mov eax, ecx
    0040ce57
    0040ce57loc_40ce57:
    0040ce57test r9l, r9l
    0040ce5ajge 0x40ce60
    0040ce5cxor ecx, ecx
    0040ce5ejmp 0x40ce6a
    0040ce60
    0040ce60loc_40ce60:
    0040ce60sub ecx, eax
    0040ce62cmp ecx, r9l
    0040ce65jle 0x40ce6a
    0040ce67mov ecx, r9l
    0040ce6a
    0040ce6aloc_40ce6a:
    0040ce6atest rdx, rdx
    0040ce6djne 0x40ce79
    0040ce6fmov rcx, rbx
    0040ce72call fn_40bd40
    0040ce77jmp 0x40ce9c
    0040ce79
    0040ce79loc_40ce79:
    0040ce79mov r8, rbx
    0040ce7cmovsxd rax, eax
    0040ce7flea rax, [rdx+rax]
    0040ce83mov r9l, ecx
    0040ce86movzx r10, [rdx-12]
    0040ce8bmov rcx, r8
    0040ce8emov rdx, rax
    0040ce91mov r8l, r9l
    0040ce94mov r9l, r10l
    0040ce97call fn_40c080
    0040ce9c
    0040ce9cloc_40ce9c:
    0040ce9cmov rax, rbx
    0040ce9fadd rsp, 32
    0040cea3pop rbx
    0040cea4ret
    0040ce30
    0040cea5
    0040cea5 // align 0x10
    0040ceb0
    0040ceb0fn_40ceb0:
    0040ceb0push rdi
    0040ceb1push rsi
    0040ceb2push rbx
    0040ceb3sub rsp, 32
    0040ceb7mov rbx, rcx
    0040cebamov esi, edx
    0040cebcmov edi, r8l
    0040cebfmov rcx, rbx
    0040cec2call fn_40c620
    0040cec7xor eax, eax
    0040cec9mov rcx, [rbx]
    0040cecctest rcx, rcx
    0040cecfje 0x40ced4
    0040ced1mov eax, [rcx-4]
    0040ced4
    0040ced4loc_40ced4:
    0040ced4cmp esi, 1
    0040ced7jl 0x40cf24
    0040ced9cmp esi, eax
    0040cedbjg 0x40cf24
    0040ceddtest edi, edi
    0040cedfjle 0x40cf24
    0040cee1sub esi, 1
    0040cee4mov ecx, eax
    0040cee6sub ecx, esi
    0040cee8sub ecx, edi
    0040ceeamov edi, ecx
    0040ceectest edi, edi
    0040ceeejge 0x40cef2
    0040cef0xor edi, edi
    0040cef2
    0040cef2loc_40cef2:
    0040cef2mov rcx, [rbx]
    0040cef5sub eax, edi
    0040cef7movsxd rax, eax
    0040cefalea rcx, [rcx+rax]
    0040cefemov rax, [rbx]
    0040cf01movsxd rdx, esi
    0040cf04lea rdx, [rax+rdx]
    0040cf08movsxd r8, edi
    0040cf0bcall fn_405ac0
    0040cf10mov rcx, rbx
    0040cf13mov edx, esi
    0040cf15add edx, edi
    0040cf17mov rax, [rbx]
    0040cf1amovzx r8, [rax-12]
    0040cf1fcall fn_40cf30
    0040cf24
    0040cf24loc_40cf24:
    0040cf24add rsp, 32
    0040cf28pop rbx
    0040cf29pop rsi
    0040cf2apop rdi
    0040cf2bret
    0040ceb0
    0040cf2c
    0040cf2c // align 0x10
    0040cf30
    0040cf30fn_40cf30:
    0040cf30push rbp
    0040cf31push r13
    0040cf33push rdi
    0040cf34push rsi
    0040cf35push rbx
    0040cf36sub rsp, 48
    0040cf3amov rbp, rsp
    0040cf3dmov rbx, rcx
    0040cf40mov esi, edx
    0040cf42test esi, esi
    0040cf44jg 0x40cf53
    0040cf46mov rcx, rbx
    0040cf49call fn_40bd40
    0040cf4ejmp 0x40cfe5
    0040cf53
    0040cf53loc_40cf53:
    0040cf53mov rax, [rbx]
    0040cf56test rax, rax
    0040cf59je 0x40cf9d
    0040cf5bcmp [rax-8], 1
    0040cf5fjne 0x40cf9d
    0040cf61lea rax, [rax-16]
    0040cf65mov [rbp+40], rax
    0040cf69lea rcx, [rbp+40]
    0040cf6dmov edx, esi
    0040cf6fadd edx, 17
    0040cf72movsxd rdx, edx
    0040cf75call fn_405760
    0040cf7amov rax, [rbp+40]
    0040cf7emov [rax+12], esi
    0040cf81mov rax, [rbp+40]
    0040cf85lea rax, [rax+16]
    0040cf89mov [rbx], rax
    0040cf8cmov rcx, [rbx]
    0040cf8fcall fn_40ce10
    0040cf94movsxd rsi, esi
    0040cf97mov [rax+rsi], 0
    0040cf9bjmp 0x40cfe5
    0040cf9d
    0040cf9dloc_40cf9d:
    0040cf9dmov ecx, esi
    0040cf9fmov edx, r8l
    0040cfa2call fn_40bc20
    0040cfa7mov rdi, rax
    0040cfaacmp [rbx], 0
    0040cfaejne 0x40cfb5
    0040cfb0mov [rbx], rdi
    0040cfb3jmp 0x40cfe5
    0040cfb5
    0040cfb5loc_40cfb5:
    0040cfb5mov rax, [rbx]
    0040cfb8mov r13l, [rax-4]
    0040cfbccmp r13l, esi
    0040cfbfjle 0x40cfc4
    0040cfc1mov r13l, esi
    0040cfc4
    0040cfc4loc_40cfc4:
    0040cfc4mov rcx, [rbx]
    0040cfc7call fn_40ce10
    0040cfccmov rcx, rax
    0040cfcfmov rdx, rdi
    0040cfd2movsxd r8, r13l
    0040cfd5call fn_405ac0
    0040cfdamov rcx, rbx
    0040cfddcall fn_40bd40
    0040cfe2mov [rbx], rdi
    0040cfe5
    0040cfe5loc_40cfe5:
    0040cfe5lea rsp, [rbp+48]
    0040cfe9pop rbx
    0040cfeapop rsi
    0040cfebpop rdi
    0040cfecpop r13
    0040cfeepop rbp
    0040cfefret
    0040cf30
    0040cff0
    0040cff0fn_40cff0:
    0040cff0sub rsp, 40
    0040cff4test rdx, rdx
    0040cff7jne 0x40d000
    0040cff9call fn_40bd40
    0040cffejmp 0x40d018
    0040d000
    0040d000loc_40d000:
    0040d000mov rax, rdx
    0040d003mov r9l, [rdx-4]
    0040d007mov r10l, r8l
    0040d00amov rdx, rax
    0040d00dmov r8l, r9l
    0040d010mov r9l, r10l
    0040d013call fn_40c2b0
    0040d018
    0040d018loc_40d018:
    0040d018add rsp, 40
    0040d01cret
    0040cff0
    0040d01d
    0040d01d // align 0x10
    0040d020
    0040d020fn_40d020:
    0040d020push rbp
    0040d021sub rsp, 48
    0040d025mov rbp, rsp
    0040d028mov rax, rdx
    0040d02block xchg [rcx], rax
    0040d02fmov [rbp+40], rax
    0040d033cmp [rbp+40], 0
    0040d038je 0x40d043
    0040d03alea rcx, [rbp+40]
    0040d03ecall fn_40bd90
    0040d043
    0040d043loc_40d043:
    0040d043lea rsp, [rbp+48]
    0040d047pop rbp
    0040d048ret
    0040d020
    0040d049
    0040d049 // align 0x10
    0040d050
    0040d050fn_40d050:
    0040d050sub rsp, 40
    0040d054mov [rsp+56], dl
    0040d058lea rdx, [rsp+56]
    0040d05dmov r8l, 1
    0040d063mov r9l, [rip+0x589ae]
    0040d06acall fn_40c1c0
    0040d06fadd rsp, 40
    0040d073ret
    0040d050
    0040d074
    0040d074 // align 0x10
    0040d080
    0040d080fn_40d080:
    0040d080sub rsp, 40
    0040d084mov [rsp+56], dx
    0040d089lea rdx, [rsp+56]
    0040d08emov r8l, 1
    0040d094call fn_40c030
    0040d099add rsp, 40
    0040d09dret
    0040d080
    0040d09e
    0040d09e // align 0x10
    0040d0a0
    0040d0a0fn_40d0a0:
    0040d0a0push rsi
    0040d0a1push rbx
    0040d0a2sub rsp, 40
    0040d0a6mov rbx, rcx
    0040d0a9mov rsi, rdx
    0040d0acmov rcx, rsi
    0040d0afcall fn_40c580
    0040d0b4mov rcx, rbx
    0040d0b7mov rdx, rsi
    0040d0bamov r8l, eax
    0040d0bdmov r9l, [rip+0x58954]
    0040d0c4call fn_40c1c0
    0040d0c9add rsp, 40
    0040d0cdpop rbx
    0040d0cepop rsi
    0040d0cfret
    0040d0a0
    0040d0d0
    0040d0d0fn_40d0d0:
    0040d0d0push rsi
    0040d0d1push rbx
    0040d0d2sub rsp, 40
    0040d0d6mov rbx, rcx
    0040d0d9mov rsi, rdx
    0040d0dctest rsi, rsi
    0040d0dfjne 0x40d0eb
    0040d0e1mov rcx, rbx
    0040d0e4call fn_40bd90
    0040d0e9jmp 0x40d101
    0040d0eb
    0040d0ebloc_40d0eb:
    0040d0ebmov rcx, rsi
    0040d0eecall fn_40c5a0
    0040d0f3mov rcx, rbx
    0040d0f6mov rdx, rsi
    0040d0f9mov r8l, eax
    0040d0fccall fn_40c030
    0040d101
    0040d101loc_40d101:
    0040d101add rsp, 40
    0040d105pop rbx
    0040d106pop rsi
    0040d107ret
    0040d0d0
    0040d108
    0040d108 // align 0x10
    0040d110
    0040d110fn_40d110:
    0040d110sub rsp, 40
    0040d114mov eax, r8l
    0040d117mov r8, rdx
    0040d11ajmp 0x40d123
    0040d11c
    0040d11cloc_40d11c:
    0040d11csub eax, 1
    0040d11fadd r8, 2
    0040d123
    0040d123loc_40d123:
    0040d123test eax, eax
    0040d125jle 0x40d12e
    0040d127cmp [r8], 0
    0040d12cjne 0x40d11c
    0040d12e
    0040d12eloc_40d12e:
    0040d12emov rax, r8
    0040d131sub rax, rdx
    0040d134sar rax, 1
    0040d138jns 0x40d13e
    0040d13aadc rax, 0
    0040d13e
    0040d13eloc_40d13e:
    0040d13emov r8l, eax
    0040d141call fn_40c030
    0040d146add rsp, 40
    0040d14aret
    0040d110
    0040d14b
    0040d14b // align 0x10
    0040d150
    0040d150fn_40d150:
    0040d150sub rsp, 40
    0040d154test rdx, rdx
    0040d157jne 0x40d160
    0040d159call fn_40bd90
    0040d15ejmp 0x40d176
    0040d160
    0040d160loc_40d160:
    0040d160mov eax, [rdx-4]
    0040d163mov r8, rdx
    0040d166movzx r9l, [rdx-12]
    0040d16bmov rdx, r8
    0040d16emov r8l, eax
    0040d171call fn_40c1c0
    0040d176
    0040d176loc_40d176:
    0040d176add rsp, 40
    0040d17aret
    0040d150
    0040d17b
    0040d17b // align 0x10
    0040d180
    0040d180fn_40d180:
    0040d180mov rax, rcx
    0040d183test rax, rax
    0040d186jne 0x40d18f
    0040d188lea rax, [rip+1]
    0040d18f
    0040d18floc_40d18f:
    0040d18fret
    0040d180
    0040d190
    0040d190 00 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc ................
    0040d1a0
    0040d1a0fn_40d1a0:
    0040d1a0push r14
    0040d1a2push r13
    0040d1a4push rdi
    0040d1a5push rsi
    0040d1a6push rbx
    0040d1a7sub rsp, 32
    0040d1abmov rbx, rcx
    0040d1aexor edi, edi
    0040d1b0mov r14, rdx
    0040d1b3test r14, r14
    0040d1b6je 0x40d1bf
    0040d1b8mov edi, [r14-4]
    0040d1bcshr edi, 1
    0040d1bf
    0040d1bfloc_40d1bf:
    0040d1bftest edi, edi
    0040d1c1je 0x40d21b
    0040d1c3xor esi, esi
    0040d1c5mov rax, [rbx]
    0040d1c8test rax, rax
    0040d1cbje 0x40d1d3
    0040d1cdmov esi, [rax-4]
    0040d1d0shr esi, 1
    0040d1d3
    0040d1d3loc_40d1d3:
    0040d1d3mov ecx, esi
    0040d1d5add ecx, edi
    0040d1d7call fn_40bcc0
    0040d1dcmov r13, rax
    0040d1dftest esi, esi
    0040d1e1jle 0x40d1f7
    0040d1e3mov rcx, [rbx]
    0040d1e6mov rdx, r13
    0040d1e9mov r8l, esi
    0040d1ecadd r8l, r8l
    0040d1efmovsxd r8, r8l
    0040d1f2call fn_405ac0
    0040d1f7
    0040d1f7loc_40d1f7:
    0040d1f7mov rcx, r14
    0040d1famovsxd rsi, esi
    0040d1fdlea rdx, [r13+2*rsi]
    0040d202mov r8l, edi
    0040d205add r8l, r8l
    0040d208movsxd r8, r8l
    0040d20bcall fn_405ac0
    0040d210mov rcx, rbx
    0040d213mov rdx, r13
    0040d216call fn_40d020
    0040d21b
    0040d21bloc_40d21b:
    0040d21badd rsp, 32
    0040d21fpop rbx
    0040d220pop rsi
    0040d221pop rdi
    0040d222pop r13
    0040d224pop r14
    0040d226ret
    0040d1a0
    0040d227
    0040d227 // align 0x10
    0040d230
    0040d230fn_40d230:
    0040d230push r14
    0040d232push r13
    0040d234push rdi
    0040d235push rsi
    0040d236push rbx
    0040d237sub rsp, 48
    0040d23bmov [rsp+40], rcx
    0040d240mov rbx, rdx
    0040d243mov rsi, r8
    0040d246xor edi, edi
    0040d248mov rax, rbx
    0040d24btest rax, rax
    0040d24eje 0x40d256
    0040d250mov edi, [rax-4]
    0040d253shr edi, 1
    0040d256
    0040d256loc_40d256:
    0040d256xor r13, r13
    0040d259mov rax, rsi
    0040d25ctest rax, rax
    0040d25fje 0x40d269
    0040d261mov r13l, [rax-4]
    0040d265shr r13l, 1
    0040d269
    0040d269loc_40d269:
    0040d269test edi, edi
    0040d26bjne 0x40d272
    0040d26dtest r13l, r13l
    0040d270je 0x40d2ba
    0040d272
    0040d272loc_40d272:
    0040d272mov ecx, edi
    0040d274add ecx, r13l
    0040d277call fn_40bcc0
    0040d27cmov r14, rax
    0040d27fmov rcx, rbx
    0040d282mov rdx, r14
    0040d285mov r8l, edi
    0040d288add r8l, r8l
    0040d28bmovsxd r8, r8l
    0040d28ecall fn_405ac0
    0040d293mov rcx, rsi
    0040d296movsxd rdi, edi
    0040d299lea rdx, [r14+2*rdi]
    0040d29dmov r8l, r13l
    0040d2a0add r8l, r8l
    0040d2a3movsxd r8, r8l
    0040d2a6call fn_405ac0
    0040d2abmov rcx, [rsp+40]
    0040d2b0mov rdx, r14
    0040d2b3call fn_40d020
    0040d2b8jmp 0x40d2c4
    0040d2ba
    0040d2baloc_40d2ba:
    0040d2bamov rcx, [rsp+40]
    0040d2bfcall fn_40bd90
    0040d2c4
    0040d2c4loc_40d2c4:
    0040d2c4add rsp, 48
    0040d2c8pop rbx
    0040d2c9pop rsi
    0040d2capop rdi
    0040d2cbpop r13
    0040d2cdpop r14
    0040d2cfret
    0040d230
    0040d2d0
    0040d2d0fn_40d2d0:
    0040d2d0push rbp
    0040d2d1push r14
    0040d2d3push r13
    0040d2d5push rdi
    0040d2d6push rsi
    0040d2d7push rbx
    0040d2d8sub rsp, 72
    0040d2dcmov rbp, rsp
    0040d2dfmov [rbp+40], rcx
    0040d2e3mov ebx, edx
    0040d2e5mov rsi, r8
    0040d2e8xor r13, r13
    0040d2ebxor eax, eax
    0040d2edmov r14l, ebx
    0040d2f0sub r14l, 1
    0040d2f4mov edi, eax
    0040d2f6cmp edi, r14l
    0040d2f9jg 0x40d341
    0040d2fbsub r14l, eax
    0040d2feadd r14l, 1
    0040d302
    0040d302loc_40d302:
    0040d302movsxd rax, edi
    0040d305mov rax, [rsi+8*rax]
    0040d309mov [rbp+56], rax
    0040d30dcmp [rbp+56], 0
    0040d312je 0x40d335
    0040d314mov rax, [rbp+56]
    0040d318mov eax, [rax-4]
    0040d31bshr eax, 31
    0040d31emov rcx, [rbp+56]
    0040d322add eax, [rcx-4]
    0040d325sar eax, 1
    0040d328add r13l, eax
    0040d32btest r13l, r13l
    0040d32ejge 0x40d335
    0040d330call fn_4085f0
    0040d335
    0040d335loc_40d335:
    0040d335add edi, 1
    0040d338sub r14l, 1
    0040d33ctest r14l, r14l
    0040d33fjne 0x40d302
    0040d341
    0040d341loc_40d341:
    0040d341nop
    0040d342mov ecx, r13l
    0040d345call fn_40bcc0
    0040d34amov r14, rax
    0040d34dxor r13, r13
    0040d350xor eax, eax
    0040d352sub ebx, 1
    0040d355mov edi, eax
    0040d357cmp edi, ebx
    0040d359jg 0x40d3c1
    0040d35bsub ebx, eax
    0040d35dadd ebx, 1
    0040d360
    0040d360loc_40d360:
    0040d360movsxd rax, edi
    0040d363mov rax, [rsi+8*rax]
    0040d367mov [rbp+56], rax
    0040d36bcmp [rbp+56], 0
    0040d370je 0x40d3b7
    0040d372mov rcx, [rbp+56]
    0040d376movsxd rax, r13l
    0040d379lea rdx, [r14+2*rax]
    0040d37dmov rax, [rbp+56]
    0040d381mov r8l, [rax-4]
    0040d385shr r8l, 31
    0040d389mov rax, [rbp+56]
    0040d38dadd r8l, [rax-4]
    0040d391sar r8l, 1
    0040d395add r8l, r8l
    0040d398movsxd r8, r8l
    0040d39bcall fn_405ac0
    0040d3a0mov rax, [rbp+56]
    0040d3a4mov eax, [rax-4]
    0040d3a7shr eax, 31
    0040d3aamov rcx, [rbp+56]
    0040d3aeadd eax, [rcx-4]
    0040d3b1sar eax, 1
    0040d3b4add r13l, eax
    0040d3b7
    0040d3b7loc_40d3b7:
    0040d3b7add edi, 1
    0040d3basub ebx, 1
    0040d3bdtest ebx, ebx
    0040d3bfjne 0x40d360
    0040d3c1
    0040d3c1loc_40d3c1:
    0040d3c1nop
    0040d3c2mov rcx, [rbp+40]
    0040d3c6mov rdx, r14
    0040d3c9call fn_40d020
    0040d3celea rsp, [rbp+72]
    0040d3d2pop rbx
    0040d3d3pop rsi
    0040d3d4pop rdi
    0040d3d5pop r13
    0040d3d7pop r14
    0040d3d9pop rbp
    0040d3daret
    0040d2d0
    0040d3db
    0040d3db // align 0x10
    0040d3e0
    0040d3e0fn_40d3e0:
    0040d3e0push r14
    0040d3e2push r13
    0040d3e4push rdi
    0040d3e5push rsi
    0040d3e6push rbx
    0040d3e7sub rsp, 64
    0040d3ebmov [rsp+40], rcx
    0040d3f0mov ebx, edx
    0040d3f2mov [rsp+48], r8
    0040d3f7xor r13, r13
    0040d3faxor esi, esi
    0040d3fcxor eax, eax
    0040d3femov edi, ebx
    0040d400sub edi, 1
    0040d403mov ecx, eax
    0040d405cmp ecx, edi
    0040d407mov [rsp+60], ecx
    0040d40bjg 0x40d459
    0040d40dsub edi, eax
    0040d40fadd edi, 1
    0040d412
    0040d412loc_40d412:
    0040d412mov eax, [rsp+60]
    0040d416movsxd rax, eax
    0040d419mov rcx, [rsp+48]
    0040d41emov rax, [rcx+8*rax]
    0040d422test rax, rax
    0040d425je 0x40d447
    0040d427mov rcx, [rsp+40]
    0040d42ccmp rax, [rcx]
    0040d42fjne 0x40d43b
    0040d431mov ecx, [rsp+60]
    0040d435test ecx, ecx
    0040d437sete r13b
    0040d43b
    0040d43bloc_40d43b:
    0040d43badd esi, [rax-4]
    0040d43etest esi, esi
    0040d440jge 0x40d447
    0040d442call fn_4085f0
    0040d447
    0040d447loc_40d447:
    0040d447mov eax, [rsp+60]
    0040d44badd eax, 1
    0040d44emov [rsp+60], eax
    0040d452sub edi, 1
    0040d455test edi, edi
    0040d457jne 0x40d412
    0040d459
    0040d459loc_40d459:
    0040d459nop
    0040d45atest r13b, r13b
    0040d45dje 0x40d485
    0040d45fmov rax, [rsp+40]
    0040d464mov rax, [rax]
    0040d467mov edi, [rax-4]
    0040d46amov rcx, [rsp+40]
    0040d46fmov edx, esi
    0040d471call fn_40d8d0
    0040d476mov rax, [rsp+40]
    0040d47bmov rsi, [rax]
    0040d47emov eax, 1
    0040d483jmp 0x40d493
    0040d485
    0040d485loc_40d485:
    0040d485mov ecx, esi
    0040d487call fn_40bbc0
    0040d48cmov rsi, rax
    0040d48fxor eax, eax
    0040d491xor edi, edi
    0040d493
    0040d493loc_40d493:
    0040d493mov r14l, ebx
    0040d496sub r14l, 1
    0040d49amov ecx, eax
    0040d49ccmp ecx, r14l
    0040d49fmov [rsp+60], ecx
    0040d4a3jg 0x40d4f4
    0040d4a5sub r14l, eax
    0040d4a8add r14l, 1
    0040d4ac
    0040d4acloc_40d4ac:
    0040d4acmov eax, [rsp+60]
    0040d4b0movsxd rax, eax
    0040d4b3mov rcx, [rsp+48]
    0040d4b8mov rax, [rcx+8*rax]
    0040d4bctest rax, rax
    0040d4bfje 0x40d4e0
    0040d4c1mov rbx, rax
    0040d4c4mov rcx, rax
    0040d4c7movsxd rax, edi
    0040d4calea rdx, [rsi+2*rax]
    0040d4cemov r8l, [rbx-4]
    0040d4d2add r8l, r8l
    0040d4d5movsxd r8, r8l
    0040d4d8call fn_405ac0
    0040d4ddadd edi, [rbx-4]
    0040d4e0
    0040d4e0loc_40d4e0:
    0040d4e0mov eax, [rsp+60]
    0040d4e4add eax, 1
    0040d4e7mov [rsp+60], eax
    0040d4ebsub r14l, 1
    0040d4eftest r14l, r14l
    0040d4f2jne 0x40d4ac
    0040d4f4
    0040d4f4loc_40d4f4:
    0040d4f4nop
    0040d4f5test r13b, r13b
    0040d4f8jne 0x40d517
    0040d4famov rax, [rsp+40]
    0040d4ffcmp [rax], 0
    0040d503je 0x40d50f
    0040d505mov rcx, [rsp+40]
    0040d50acall fn_40bcf0
    0040d50f
    0040d50floc_40d50f:
    0040d50fmov rax, [rsp+40]
    0040d514mov [rax], rsi
    0040d517
    0040d517loc_40d517:
    0040d517add rsp, 64
    0040d51bpop rbx
    0040d51cpop rsi
    0040d51dpop rdi
    0040d51epop r13
    0040d520pop r14
    0040d522ret
    0040d3e0
    0040d523
    0040d523 // align 0x10
    0040d530
    0040d530fn_40d530:
    0040d530push rbp
    0040d531push rbx
    0040d532sub rsp, 40
    0040d536mov rbp, rsp
    0040d539mov [rbp+80], r8
    0040d53dmov [rbp+88], r9
    0040d541mov [rbp+64], rcx
    0040d545mov [rbp+72], edx
    0040d548lea rbx, [rbp+80]
    0040d54cmov rcx, [rbp+64]
    0040d550mov edx, [rbp+72]
    0040d553mov r8, rbx
    0040d556call fn_40d2d0
    0040d55blea rsp, [rbp+40]
    0040d55fpop rbx
    0040d560pop rbp
    0040d561ret
    0040d530
    0040d562
    0040d562 // align 0x10
    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