File trigona_be6dfedd91e1ebc81d58a61b05b0ef93322425b247636a0f7f5c3eeebbc52edd.exe
Function:
    00403bc0
    00403bc0fn_403bc0:
    00403bc0push rbp
    00403bc1push r14
    00403bc3push r13
    00403bc5push rdi
    00403bc6push rsi
    00403bc7push rbx
    00403bc8sub rsp, 88
    00403bccmov rbp, rsp
    00403bcfmov rbx, rcx
    00403bd2mov rsi, rdx
    00403bd5mov r14, rbx
    00403bd8mov rax, [r14-8]
    00403bdcmov rcx, rax
    00403bdfand rcx, -16
    00403be3lea rdi, [rcx-40]
    00403be7cmp rsi, rdi
    00403beajbe 0x403cee
    00403bf0mov rcx, rdi
    00403bf3shr rcx, 2
    00403bf7lea r13, [rdi+rcx]
    00403bfbcmp rsi, r13
    00403bfejb 0x403c03
    00403c00mov r13, rsi
    00403c03
    00403c03loc_403c03:
    00403c03and rax, -16
    00403c07lea r14, [r14+rax-32]
    00403c0cmov rcx, r14
    00403c0flea rdx, [rbp+32]
    00403c13mov r8l, 48
    00403c19call VirtualQuery
    00403c1ecmp [rbp+64], 0x10000
    00403c25jne 0x403cb5
    00403c2band [rbp+56], 0xffffffffffff0000
    00403c33mov rax, [rbp+56]
    00403c37mov rcx, rsi
    00403c3asub rcx, rdi
    00403c3dcmp rax, rcx
    00403c40jbe 0x403cb5
    00403c42mov rcx, r13
    00403c45sub rcx, rdi
    00403c48add rcx, 65535
    00403c4fand rcx, 0xffffffffffff0000
    00403c56mov rdi, rcx
    00403c59cmp rdi, rax
    00403c5cjbe 0x403c61
    00403c5emov rdi, rax
    00403c61
    00403c61loc_403c61:
    00403c61mov rcx, r14
    00403c64mov rdx, rdi
    00403c67mov r8l, 8192
    00403c6dmov r9l, 4
    00403c73call VirtualAlloc
    00403c78test rax, rax
    00403c7bje 0x403cb5
    00403c7dmov rcx, r14
    00403c80mov rdx, rdi
    00403c83mov r8l, 4096
    00403c89mov r9l, 4
    00403c8fcall VirtualAlloc
    00403c94test rax, rax
    00403c97je 0x403cb5
    00403c99mov rax, rbx
    00403c9cmov [rax-16], rsi
    00403ca0mov rcx, [rax-8]
    00403ca4lea rcx, [rcx+rdi]
    00403ca8or rcx, 8
    00403cacmov [rax-8], rcx
    00403cb0mov rdi, rbx
    00403cb3jmp 0x403d33
    00403cb5
    00403cb5loc_403cb5:
    00403cb5mov rcx, r13
    00403cb8call fn_403d50
    00403cbdmov rdi, rax
    00403cc0test rdi, rdi
    00403cc3je 0x403d33
    00403cc5cmp r13, 0x40a28
    00403cccjbe 0x403cd2
    00403ccemov [rdi-16], rsi
    00403cd2
    00403cd2loc_403cd2:
    00403cd2mov rax, [rbx-16]
    00403cd6mov rcx, rbx
    00403cd9mov rdx, rdi
    00403cdcmov r8, rax
    00403cdfcall fn_4037a0
    00403ce4mov rcx, rbx
    00403ce7call fn_404120
    00403cecjmp 0x403d33
    00403cee
    00403ceeloc_403cee:
    00403ceeshr rdi, 1
    00403cf2cmp rsi, rdi
    00403cf5jb 0x403d00
    00403cf7mov rdi, rbx
    00403cfamov [r14-16], rsi
    00403cfejmp 0x403d33
    00403d00
    00403d00loc_403d00:
    00403d00mov rcx, rsi
    00403d03call fn_403d50
    00403d08mov rdi, rax
    00403d0btest rdi, rdi
    00403d0eje 0x403d33
    00403d10cmp rsi, 0x40a28
    00403d17jbe 0x403d1d
    00403d19mov [r14-16], rsi
    00403d1d
    00403d1dloc_403d1d:
    00403d1dmov rcx, rbx
    00403d20mov rdx, rdi
    00403d23mov r8, rsi
    00403d26call fn_4037a0
    00403d2bmov rcx, rbx
    00403d2ecall fn_404120
    00403d33
    00403d33loc_403d33:
    00403d33mov rax, rdi
    00403d36lea rsp, [rbp+88]
    00403d3apop rbx
    00403d3bpop rsi
    00403d3cpop rdi
    00403d3dpop r13
    00403d3fpop r14
    00403d41pop rbp
    00403d42ret
    00403bc0
    00403d43
    00403d43 // align 0x10
    00403d50
    00403d50fn_403d50:
    00403d50push rbp
    00403d51push rdi
    00403d52push rsi
    00403d53push rbx
    00403d54sub rsp, 40
    00403d58mov rbp, rsp
    00403d5blea edx, [ecx+7]
    00403d5fshr edx, 3
    00403d62lea r8, [rip+0x61cc3]
    00403d69lea rbx, [rip+0x55368]
    00403d70movzx esi, [rip+0x61322]
    00403d77cmp rcx, 2600
    00403d7eja 0x403fb9
    00403d84movzx ecx, [r8+rdx]
    00403d89shl ecx, 4
    00403d8cadd rbx, rcx
    00403d8ftest esi, esi
    00403d91jne 0x403e01
    00403d93
    00403d93loc_403d93:
    00403d93mov rdx, [rbx+8]
    00403d97mov rax, [rdx+24]
    00403d9bmov rcx, -8
    00403da5cmp rdx, rbx
    00403da8je 0x403dc4
    00403daaadd [rdx+32], 1
    00403daeand rcx, [rax-8]
    00403db2mov [rdx+24], rcx
    00403db6mov [rax-8], rdx
    00403dbaje 0x403ded
    00403dbcmov [rbx], 0
    00403dbfjmp 0x404108
    00403dc4
    00403dc4loc_403dc4:
    00403dc4mov rdx, [rbx+40]
    00403dc8movzx ecx, [rbx+2]
    00403dccadd rcx, rax
    00403dcfcmp rax, [rbx+32]
    00403dd3ja 0x403e6c
    00403dd9add [rdx+32], 1
    00403dddmov [rbx+24], rcx
    00403de1mov [rbx], 0
    00403de4mov [rax-8], rdx
    00403de8jmp 0x404108
    00403ded
    00403dedloc_403ded:
    00403dedmov rcx, [rdx+8]
    00403df1mov [rcx+16], rbx
    00403df5mov [rbx+8], rcx
    00403df9mov [rbx], 0
    00403dfcjmp 0x404108
    00403e01
    00403e01loc_403e01:
    00403e01mov eax, 256
    00403e06lock cmpxchg [rbx], ah
    00403e0aje 0x403d93
    00403e0cadd rbx, 64
    00403e10mov eax, 256
    00403e15lock cmpxchg [rbx], ah
    00403e19je 0x403d93
    00403e1fadd rbx, 64
    00403e23mov eax, 256
    00403e28lock cmpxchg [rbx], ah
    00403e2cje 0x403d93
    00403e32sub rbx, 128
    00403e39nop
    00403e3blea rax, [rip+0x61be3]
    00403e42cmp [rax], 0
    00403e45jne 0x403e01
    00403e47mov ecx, 0
    00403e4ccall Sleep
    00403e51mov eax, 256
    00403e56lock cmpxchg [rbx], ah
    00403e5aje 0x403d93
    00403e60mov ecx, 10
    00403e65call Sleep
    00403e6ajmp 0x403e01
    00403e6c
    00403e6cloc_403e6c:
    00403e6ctest esi, esi
    00403e6eje 0x403e75
    00403e70call fn_4037d0
    00403e75
    00403e75loc_403e75:
    00403e75movsx esi, [rbx+1]
    00403e79and esi, [rip+0x61d2d]
    00403e7fje 0x403f14
    00403e85bsf eax, esi
    00403e88lea r8, [rip+0x61d21]
    00403e8flea r9, [4*rax]
    00403e97mov ecx, [r8+r9]
    00403e9bbsf ecx, ecx
    00403e9elea ecx, [ecx+8*r9l]
    00403ea3lea rdi, [rip+0x61d86]
    00403eaalea esi, [8*ecx]
    00403eb2lea rdi, [rdi+2*rsi]
    00403eb6mov rsi, [rdi+8]
    00403ebamov rdx, [rsi+8]
    00403ebemov [rdi+8], rdx
    00403ec2mov [rdx], rdi
    00403ec5cmp rdi, rdx
    00403ec8jne 0x403ede
    00403ecamov edx, -2
    00403ecfrol edx, cl
    00403ed1and [r8+r9], edx
    00403ed5jne 0x403ede
    00403ed7btr [rip+0x61cce], eax
    00403ede
    00403edeloc_403ede:
    00403edemov rdi, -16
    00403ee8and rdi, [rsi-8]
    00403eeccmp edi, 0x10a60
    00403ef2jb 0x403f6c
    00403ef4mov edx, edi
    00403ef6movzx edi, [rbx+6]
    00403efasub edx, edi
    00403efclea rcx, [rsi+rdi]
    00403f00lea rax, [rdx+3]
    00403f04mov [rcx-8], rax
    00403f08mov [rcx+rdx-16], rdx
    00403f0dcall fn_403870
    00403f12jmp 0x403f71
    00403f14
    00403f14loc_403f14:
    00403f14movzx ecx, [rbx+4]
    00403f18mov edi, [rip+0x61c8a]
    00403f1ecmp edi, ecx
    00403f20jb 0x403f4c
    00403f22mov rsi, [rip+0x61c77]
    00403f29movzx ecx, [rbx+6]
    00403f2dlea edx, [ecx+2864]
    00403f34cmp edi, edx
    00403f36jb 0x403f3a
    00403f38mov edi, ecx
    00403f3a
    00403f3aloc_403f3a:
    00403f3asub rsi, rdi
    00403f3dsub [rip+0x61c65], edi
    00403f43mov [rip+0x61c56], rsi
    00403f4ajmp 0x403f71
    00403f4c
    00403f4cloc_403f4c:
    00403f4cmovzx ecx, [rbx+6]
    00403f50mov edi, ecx
    00403f52call fn_403980
    00403f57mov rsi, rax
    00403f5atest rax, rax
    00403f5djne 0x403f71
    00403f5fmov [rip+0x61c33], al
    00403f65mov [rbx], al
    00403f67jmp 0x404108
    00403f6c
    00403f6cloc_403f6c:
    00403f6cand [rsi+rdi-8], 247
    00403f71
    00403f71loc_403f71:
    00403f71lea ecx, [edi+6]
    00403f75mov [rsi-8], rcx
    00403f79xor eax, eax
    00403f7bmov [rip+0x61c17], al
    00403f81mov [rsi], rbx
    00403f84mov [rsi+24], rax
    00403f88mov [rsi+32], 1
    00403f8fmov [rbx+40], rsi
    00403f93lea rax, [rsi+48]
    00403f97movzx ecx, [rbx+2]
    00403f9blea rdx, [rax+rcx]
    00403f9fmov [rbx+24], rdx
    00403fa3add rdi, rsi
    00403fa6sub rdi, rcx
    00403fa9mov [rbx+32], rdi
    00403fadmov [rbx], 0
    00403fb0mov [rax-8], rsi
    00403fb4jmp 0x404108
    00403fb9
    00403fb9loc_403fb9:
    00403fb9cmp rcx, 0x40a28
    00403fc0ja 0x4040fb
    00403fc6lea ebx, [ecx+215]
    00403fcdand ebx, -256
    00403fd3add ebx, 48
    00403fd6test esi, esi
    00403fd8je 0x403fdf
    00403fdacall fn_4037d0
    00403fdf
    00403fdfloc_403fdf:
    00403fdflea edx, [ebx-2864]
    00403fe6mov ecx, edx
    00403fe8shr edx, 13
    00403febshr ecx, 8
    00403feemov eax, -1
    00403ff3shl eax, cl
    00403ff5lea r8, [rip+0x61bb4]
    00403ffcand eax, [r8+4*rdx]
    00404000je 0x40400c
    00404002and ecx, -32
    00404005bsf eax, eax
    00404008or ecx, eax
    0040400ajmp 0x40406f
    0040400c
    0040400cloc_40400c:
    0040400cmov eax, -2
    00404011mov ecx, edx
    00404013shl eax, cl
    00404015and eax, [rip+0x61b91]
    0040401bje 0x404030
    0040401dbsf edx, eax
    00404020mov eax, [r8+4*rdx]
    00404024bsf ecx, eax
    00404027mov eax, edx
    00404029shl eax, 5
    0040402cor ecx, eax
    0040402ejmp 0x40406f
    00404030
    00404030loc_404030:
    00404030mov ecx, [rip+0x61b72]
    00404036sub ecx, ebx
    00404038jb 0x40405b
    0040403amov rax, [rip+0x61b5f]
    00404041sub rax, rbx
    00404044mov [rip+0x61b55], rax
    0040404bmov [rip+0x61b57], ecx
    00404051or rbx, 2
    00404055mov [rax-8], rbx
    00404059jmp 0x404062
    0040405b
    0040405bloc_40405b:
    0040405bmov ecx, ebx
    0040405dcall fn_403980
    00404062
    00404062loc_404062:
    00404062xor cl, cl
    00404064mov [rip+0x61b2e], cl
    0040406ajmp 0x404108
    0040406f
    0040406floc_40406f:
    0040406flea rdi, [rip+0x61bba]
    00404076lea eax, [ecx+ecx]
    0040407alea rdi, [rdi+8*rax]
    0040407emov rsi, [rdi+8]
    00404082mov rax, [rsi+8]
    00404086mov [rdi+8], rax
    0040408amov [rax], rdi
    0040408dcmp rdi, rax
    00404090jne 0x4040ad
    00404092mov eax, -2
    00404097rol eax, cl
    00404099lea r8, [rip+0x61b10]
    004040a0and [r8+4*rdx], eax
    004040a4jne 0x4040ad
    004040a6btr [rip+0x61aff], edx
    004040ad
    004040adloc_4040ad:
    004040admov rdi, -16
    004040b7and rdi, [rsi-8]
    004040bbmov edx, edi
    004040bdsub edx, ebx
    004040bfje 0x4040e1
    004040c1lea rcx, [rsi+rbx]
    004040c5lea rax, [rdx+3]
    004040c9mov [rcx-8], rax
    004040cdmov [rcx+rdx-16], rdx
    004040d2cmp edx, 2864
    004040d8jb 0x4040e6
    004040dacall fn_403870
    004040dfjmp 0x4040e6
    004040e1
    004040e1loc_4040e1:
    004040e1and [rsi+rdi-8], 247
    004040e6
    004040e6loc_4040e6:
    004040e6lea rcx, [rbx+2]
    004040eamov [rsi-8], rcx
    004040eexor cl, cl
    004040f0mov [rip+0x61aa2], cl
    004040f6mov rax, rsi
    004040f9jmp 0x404108
    004040fb
    004040fbloc_4040fb:
    004040fbxor rax, rax
    004040fetest rcx, rcx
    00404101js 0x404108
    00404103call fn_403a70
    00404108
    00404108loc_404108:
    00404108lea rsp, [rbp+40]
    0040410cpop rbx
    0040410dpop rsi
    0040410epop rdi
    0040410fpop rbp
    00404110ret
    00403d50
    00404111
    00404111 // align 0x10
    00404120
    00404120fn_404120:
    00404120push rbp
    00404121push rsi
    00404122push rbx
    00404123sub rsp, 32
    00404127mov rbp, rsp
    0040412amov rdx, [rcx-8]
    0040412etest dl, 7
    00404131mov bl, [rip+0x60f62]
    00404137jne 0x40420b
    0040413dtest bl, bl
    0040413fmov rbx, [rdx]
    00404142jne 0x4041b9
    00404144
    00404144loc_404144:
    00404144sub [rdx+32], 1
    00404148mov rax, [rdx+24]
    0040414cje 0x404186
    0040414etest rax, rax
    00404151mov [rdx+24], rcx
    00404155lea rax, [rax+1]
    00404159mov [rcx-8], rax
    0040415dje 0x404168
    0040415fxor eax, eax
    00404161mov [rbx], al
    00404163jmp 0x40432e
    00404168
    00404168loc_404168:
    00404168mov rcx, [rbx+8]
    0040416cmov [rdx+16], rbx
    00404170mov [rdx+8], rcx
    00404174mov [rcx+16], rdx
    00404178mov [rbx+8], rdx
    0040417cmov [rbx], 0
    0040417fxor eax, eax
    00404181jmp 0x40432e
    00404186
    00404186loc_404186:
    00404186test rax, rax
    00404189je 0x4041a4
    0040418bmov rax, [rdx+16]
    0040418fmov rcx, [rdx+8]
    00404193mov [rax+8], rcx
    00404197mov [rcx+16], rax
    0040419bxor rax, rax
    0040419ecmp [rbx+40], rdx
    004041a2jne 0x4041a8
    004041a4
    004041a4loc_4041a4:
    004041a4mov [rbx+32], rax
    004041a8
    004041a8loc_4041a8:
    004041a8mov [rbx], al
    004041aamov rcx, rdx
    004041admov rdx, [rdx-8]
    004041b1mov bl, [rip+0x60ee2]
    004041b7jmp 0x404214
    004041b9
    004041b9loc_4041b9:
    004041b9mov eax, 256
    004041belock cmpxchg [rbx], ah
    004041c2je 0x404144
    004041c4nop
    004041c6lea rax, [rip+0x61858]
    004041cdcmp [rax], 0
    004041d0jne 0x4041b9
    004041d2mov rsi, rcx
    004041d5mov ecx, 0
    004041dacall Sleep
    004041dfmov rcx, rsi
    004041e2mov rdx, [rcx-8]
    004041e6mov eax, 256
    004041eblock cmpxchg [rbx], ah
    004041efje 0x404144
    004041f5mov rsi, rcx
    004041f8mov ecx, 10
    004041fdcall Sleep
    00404202mov rcx, rsi
    00404205mov rdx, [rcx-8]
    00404209jmp 0x4041b9
    0040420b
    0040420bloc_40420b:
    0040420btest dl, 5
    0040420ejne 0x40431f
    00404214
    00404214loc_404214:
    00404214and rdx, -16
    00404218test bl, bl
    0040421amov rbx, rdx
    0040421dmov rsi, rcx
    00404220je 0x404227
    00404222call fn_4037d0
    00404227
    00404227loc_404227:
    00404227test [rsi+rbx-8], 1
    0040422fmov rcx, [rsi+rbx-8]
    00404234jne 0x404272
    00404236or rcx, 8
    0040423amov [rsi+rbx-8], rcx
    0040423f
    0040423floc_40423f:
    0040423ftest [rsi-8], 8
    00404243jne 0x404290
    00404245
    00404245loc_404245:
    00404245cmp ebx, 0x13ffd0
    0040424bje 0x4042ac
    0040424dlea rax, [rbx+3]
    00404251mov [rsi-8], rax
    00404255mov [rsi+rbx-16], rbx
    0040425amov rcx, rsi
    0040425dmov rdx, rbx
    00404260call fn_403870
    00404265xor eax, eax
    00404267mov [rip+0x6192b], al
    0040426djmp 0x40432e
    00404272
    00404272loc_404272:
    00404272lea rax, [rsi+rbx]
    00404276and rcx, -16
    0040427aadd rbx, rcx
    0040427dcmp rcx, 2864
    00404284jb 0x40423f
    00404286mov rcx, rax
    00404289call fn_403820
    0040428ejmp 0x40423f
    00404290
    00404290loc_404290:
    00404290mov rcx, [rsi-16]
    00404294sub rsi, rcx
    00404297add rbx, rcx
    0040429acmp ecx, 2864
    004042a0jb 0x404245
    004042a2mov rcx, rsi
    004042a5call fn_403820
    004042aajmp 0x404245
    004042ac
    004042acloc_4042ac:
    004042aclea r8, [rip+0x618f5]
    004042b3cmp [r8], 0x13ffd0
    004042bajne 0x4042ed
    004042bcsub rsi, 32
    004042c0mov rax, [rsi]
    004042c3mov rdx, [rsi+8]
    004042c7mov [rax+8], rdx
    004042cbmov [rdx], rax
    004042cexor eax, eax
    004042d0mov [rip+0x618c2], al
    004042d6mov rcx, rsi
    004042d9xor edx, edx
    004042dbmov r8l, 32768
    004042e1call VirtualFree
    004042e6cmp eax, 1
    004042e9sbb eax, eax
    004042ebjmp 0x40432e
    004042ed
    004042edloc_4042ed:
    004042edlea rbx, [rsi+0x13ffd0]
    004042f4call fn_4038e0
    004042f9mov [rbx-8], 2
    00404301lea rax, [rip+0x618a0]
    00404308mov [rax], 0x13ffd0
    0040430emov [rip+0x6188b], rbx
    00404315xor eax, eax
    00404317mov [rip+0x6187b], al
    0040431djmp 0x40432e
    0040431f
    0040431floc_40431f:
    0040431fmov eax, -1
    00404324test dl, 3
    00404327jne 0x40432e
    00404329call fn_403b00
    0040432e
    0040432eloc_40432e:
    0040432elea rsp, [rbp+32]
    00404332pop rbx
    00404333pop rsi
    00404334pop rbp
    00404335ret
    00404120
    00404336
    00404336 // align 0x10
    00404340
    00404340fn_404340:
    00404340push rbp
    00404341push r15
    00404343push r14
    00404345push rdi
    00404346push rsi
    00404347push rbx
    00404348sub rsp, 40
    0040434cmov rbp, rsp
    0040434fmov rsi, rcx
    00404352mov rcx, [rcx-8]
    00404356test cl, 7
    00404359jne 0x40440f
    0040435fmov rbx, [rcx]
    00404362movzx ecx, [rbx+2]
    00404366sub ecx, 8
    00404369cmp rcx, rdx
    0040436cjb 0x4043b7
    0040436elea ebx, [4*edx+64]
    00404376cmp ebx, ecx
    00404378jb 0x404382
    0040437amov rax, rsi
    0040437djmp 0x404699
    00404382
    00404382loc_404382:
    00404382mov rbx, rdx
    00404385mov rcx, rdx
    00404388call fn_403d50
    0040438dtest rax, rax
    00404390je 0x404699
    00404396mov r8, rbx
    00404399mov rdx, rax
    0040439cmov rbx, rax
    0040439fmov rcx, rsi
    004043a2call fn_4037a0
    004043a7mov rcx, rsi
    004043aacall fn_404120
    004043afmov rax, rbx
    004043b2jmp 0x404699
    004043b7
    004043b7loc_4043b7:
    004043b7lea ecx, [ecx+ecx+32]
    004043bcmov rdi, rdx
    004043bfxor rax, rax
    004043c2sub rcx, rdx
    004043c5adc rax, -1
    004043c9and rcx, rax
    004043ccadd rcx, rdx
    004043cfcall fn_403d50
    004043d4test rax, rax
    004043d7je 0x404699
    004043ddcmp rdi, 0x40a28
    004043e4jbe 0x4043ea
    004043e6mov [rax-16], rdi
    004043ea
    004043ealoc_4043ea:
    004043eamovzx r8l, [rbx+2]
    004043efsub r8l, 8
    004043f3mov rdx, rax
    004043f6mov rdi, rax
    004043f9mov rcx, rsi
    004043fccall [rbx+48]
    004043ffmov rcx, rsi
    00404402call fn_404120
    00404407mov rax, rdi
    0040440ajmp 0x404699
    0040440f
    0040440floc_40440f:
    0040440ftest cl, 5
    00404412jne 0x404688
    00404418mov rbx, rcx
    0040441band ecx, -16
    0040441elea rdi, [rsi+rcx]
    00404422sub ecx, 8
    00404425and ebx, 15
    00404428cmp rdx, rcx
    0040442bja 0x40453a
    00404431lea r15, [rdx+rdx]
    00404435cmp r15, rcx
    00404438jb 0x404442
    0040443a
    0040443aloc_40443a:
    0040443amov rax, rsi
    0040443djmp 0x404699
    00404442
    00404442loc_404442:
    00404442cmp edx, 2856
    00404448jae 0x40445f
    0040444acmp edx, 716
    00404450jb 0x404505
    00404456mov edx, 2856
    0040445bcmp ecx, edx
    0040445djbe 0x40443a
    0040445f
    0040445floc_40445f:
    0040445flea r15, [rdx+215]
    00404466and r15, -256
    0040446dadd r15, 48
    00404471add ecx, 8
    00404474sub ecx, r15l
    00404477lea r8, [rip+0x60c1b]
    0040447ecmp [r8], 0
    00404482je 0x40449b
    00404484mov ebx, ecx
    00404486call fn_4037d0
    0040448bmov ecx, ebx
    0040448dmov rbx, 15
    00404497and rbx, [rsi-8]
    0040449b
    0040449bloc_40449b:
    0040449bor rbx, r15
    0040449emov [rsi-8], rbx
    004044a2mov ebx, ecx
    004044a4mov rdx, [rdi-8]
    004044a8test dl, 1
    004044abjne 0x4044b7
    004044ador rdx, 8
    004044b1mov [rdi-8], rdx
    004044b5jmp 0x4044d1
    004044b7
    004044b7loc_4044b7:
    004044b7mov rcx, rdi
    004044baand rdx, -16
    004044beadd rbx, rdx
    004044c1add rdi, rdx
    004044c4cmp edx, 2864
    004044cajb 0x4044d1
    004044cccall fn_403820
    004044d1
    004044d1loc_4044d1:
    004044d1mov [rdi-16], rbx
    004044d5lea rcx, [rbx+3]
    004044d9mov [rsi+r15-8], rcx
    004044decmp rbx, 2864
    004044e5jb 0x4044f3
    004044e7lea rcx, [rsi+r15]
    004044ebmov rdx, rbx
    004044eecall fn_403870
    004044f3
    004044f3loc_4044f3:
    004044f3lea rax, [rip+0x6169e]
    004044famov [rax], 0
    004044fdmov rax, rsi
    00404500jmp 0x404699
    00404505
    00404505loc_404505:
    00404505mov rdi, rdx
    00404508mov rcx, rdx
    0040450bcall fn_403d50
    00404510test rax, rax
    00404513je 0x404699
    00404519mov r15, rax
    0040451cmov rdx, rax
    0040451fmov rcx, rsi
    00404522mov r8, rdi
    00404525call fn_4037a0
    0040452amov rcx, rsi
    0040452dcall fn_404120
    00404532mov rax, r15
    00404535jmp 0x404699
    0040453a
    0040453aloc_40453a:
    0040453amov rax, [rdi-8]
    0040453etest al, 1
    00404540je 0x40462f
    00404546and rax, -16
    0040454alea r15, [rax+rcx]
    0040454ecmp rdx, r15
    00404551ja 0x40462f
    00404557lea r8, [rip+0x60b3b]
    0040455ecmp [r8], 0
    00404562je 0x40459f
    00404564mov rbx, rcx
    00404567mov r15, rdx
    0040456acall fn_4037d0
    0040456fmov rcx, rbx
    00404572mov rdx, r15
    00404575mov rbx, 15
    0040457fand rbx, [rsi-8]
    00404583mov rax, [rdi-8]
    00404587test al, 1
    00404589je 0x404625
    0040458fand eax, -16
    00404592lea r15, [rax+rcx]
    00404596cmp rdx, r15
    00404599ja 0x404625
    0040459f
    0040459floc_40459f:
    0040459fcmp eax, 2864
    004045a4jb 0x4045ba
    004045a6mov r14, rcx
    004045a9mov rcx, rdi
    004045acmov rdi, rdx
    004045afcall fn_403820
    004045b4mov rcx, r14
    004045b7mov rdx, rdi
    004045ba
    004045baloc_4045ba:
    004045bamov eax, ecx
    004045bcshr eax, 2
    004045bfadd eax, ecx
    004045c1xor edi, edi
    004045c3sub eax, edx
    004045c5adc edi, -1
    004045c8and eax, edi
    004045calea eax, [eax+edx+215]
    004045d2and eax, -256
    004045d7add eax, 48
    004045dalea rdx, [r15+8]
    004045desub edx, eax
    004045e0ja 0x4045ed
    004045e2and [rsi+r15], -9
    004045e7add r15, 8
    004045ebjmp 0x40460f
    004045ed
    004045edloc_4045ed:
    004045edmov [rsi+r15-8], rdx
    004045f2lea edi, [edx+3]
    004045f6mov [rsi+rax-8], rdi
    004045fbmov r15, rax
    004045fecmp edx, 2864
    00404604jb 0x40460f
    00404606lea rcx, [rsi+rax]
    0040460acall fn_403870
    0040460f
    0040460floc_40460f:
    0040460for r15, rbx
    00404612mov [rsi-8], r15
    00404616lea rax, [rip+0x6157b]
    0040461dmov [rax], 0
    00404620mov rax, rsi
    00404623jmp 0x404699
    00404625
    00404625loc_404625:
    00404625lea rax, [rip+0x6156c]
    0040462cmov [rax], 0
    0040462f
    0040462floc_40462f:
    0040462fmov eax, ecx
    00404631shr eax, 2
    00404634add eax, ecx
    00404636xor rdi, rdi
    00404639sub rax, rdx
    0040463cadc rdi, -1
    00404640and rax, rdi
    00404643add rax, rdx
    00404646mov r15, rax
    00404649mov edi, ecx
    0040464bmov rbx, rdx
    0040464emov rcx, rax
    00404651call fn_403d50
    00404656mov rdx, rbx
    00404659test eax, eax
    0040465bje 0x404699
    0040465dcmp r15, 0x40a28
    00404664jbe 0x40466a
    00404666mov [rax-16], rdx
    0040466a
    0040466aloc_40466a:
    0040466amov r15, rax
    0040466dmov rdx, rax
    00404670mov rcx, rsi
    00404673mov r8, rdi
    00404676call fn_4037a0
    0040467bmov rcx, rsi
    0040467ecall fn_404120
    00404683mov rax, r15
    00404686jmp 0x404699
    00404688
    00404688loc_404688:
    00404688test cl, 3
    0040468bjne 0x404697
    0040468dmov rcx, rsi
    00404690call fn_403bc0
    00404695jmp 0x404699
    00404697
    00404697loc_404697:
    00404697xor eax, eax
    00404699
    00404699loc_404699:
    00404699lea rsp, [rbp+40]
    0040469dpop rbx
    0040469epop rsi
    0040469fpop rdi
    004046a0pop r14
    004046a2pop r15
    004046a4pop rbp
    004046a5ret
    00404340
    004046a6
    004046a6 // align 0x10
    004046b0
    004046b0fn_4046b0:
    004046b0push rbp
    004046b1push rbx
    004046b2sub rsp, 40
    004046b6mov rbp, rsp
    004046b9lea rbx, [rcx-1]
    004046bdand rbx, -8
    004046c1call fn_403d50
    004046c6cmp rax, 1
    004046casbb rcx, rcx
    004046cdlea rdx, [rax+rbx]
    004046d1or rbx, rcx
    004046d4je 0x4046f1
    004046d6cmp rbx, 0x40a28
    004046ddjae 0x4046f7
    004046dfneg rbx
    004046e2pxor x0, x0
    004046e6
    004046e6loc_4046e6:
    004046e6movdqa [rdx+rbx], x0
    004046ebadd rbx, 16
    004046efjs 0x4046e6
    004046f1
    004046f1loc_4046f1:
    004046f1xor rcx, rcx
    004046f4mov [rdx], rcx
    004046f7
    004046f7loc_4046f7:
    004046f7lea rsp, [rbp+40]
    004046fbpop rbx
    004046fcpop rbp
    004046fdret
    004046b0
    004046fe
    004046fe // align 0x10
    00404700
    00404700fn_404700:
    00404700push rbp
    00404701push rdi
    00404702push rsi
    00404703push rbx
    00404704sub rsp, 72
    00404708mov rbp, rsp
    0040470bmov rbx, rcx
    0040470emov rsi, rdx
    00404711cmp [rip+0x60980], 0
    00404718je 0x4047b8
    0040471emov ecx, -12
    00404723call GetStdHandle
    00404728mov rdi, rax
    0040472bmov rcx, rsi
    0040472ecall fn_40c580
    00404733mov rcx, rdi
    00404736mov rdx, rsi
    00404739mov r8l, eax
    0040473clea r9, [rbp+60]
    00404740mov [rsp+32], 0
    00404749call WriteFile
    0040474emov ecx, -12
    00404753call GetStdHandle
    00404758mov rsi, rax
    0040475bmov rcx, [rip+0x54956]
    00404762call fn_40c580
    00404767mov rcx, rsi
    0040476amov rdx, [rip+0x54947]
    00404771mov r8l, eax
    00404774lea r9, [rbp+60]
    00404778mov [rsp+32], 0
    00404781call WriteFile
    00404786mov ecx, -12
    0040478bcall GetStdHandle
    00404790mov rsi, rax
    00404793mov rcx, rbx
    00404796call fn_40c580
    0040479bmov rcx, rsi
    0040479emov rdx, rbx
    004047a1mov r8l, eax
    004047a4lea r9, [rbp+60]
    004047a8mov [rsp+32], 0
    004047b1call WriteFile
    004047b6jmp 0x4047cb
    004047b8
    004047b8loc_4047b8:
    004047b8xor ecx, ecx
    004047bamov rdx, rbx
    004047bdmov r8, rsi
    004047c0mov r9l, 8208
    004047c6call MessageBoxA
    004047cb
    004047cbloc_4047cb:
    004047cblea rsp, [rbp+72]
    004047cfpop rbx
    004047d0pop rsi
    004047d1pop rdi
    004047d2pop rbp
    004047d3ret
    00404700
    004047d4
    004047d4 // align 0x10
    004047e0
    004047e0fn_4047e0:
    004047e0mov rax, rcx
    004047e3mov ecx, [rax-8]
    004047e6and ecx, -16
    004047e9mov ecx, ecx
    004047eblea rax, [rax+rcx]
    004047efmov ecx, [rax-8]
    004047f2and ecx, -16
    004047f5test ecx, ecx
    004047f7jne 0x4047fb
    004047f9xor eax, eax
    004047fb
    004047fbloc_4047fb:
    004047fbret
    004047e0
    004047fc
    004047fc // align 0x10
    00404800
    00404800fn_404800:
    00404800cmp [rip+0x613a1], 0
    00404807je 0x404822
    00404809cmp [rip+0x61390], rcx
    00404810jb 0x404822
    00404812lea rax, [rcx+0x13fff0]
    00404819cmp [rip+0x61380], rax
    00404820jbe 0x404828
    00404822
    00404822loc_404822:
    00404822lea rax, [rcx+32]
    00404826jmp 0x40483f
    00404828
    00404828loc_404828:
    00404828cmp [rip+0x61376], 0x13ffd0
    00404832je 0x40483d
    00404834mov rax, [rip+0x61365]
    0040483bjmp 0x40483f
    0040483d
    0040483dloc_40483d:
    0040483dxor eax, eax
    0040483f
    0040483floc_40483f:
    0040483fret
    00404800
    00404840
    00404840fn_404840:
    00404840lea rax, [rcx+48]
    00404844mov [rdx], rax
    00404847mov rdx, [rcx]
    0040484acmp [rdx+40], rcx
    0040484ejne 0x40485a
    00404850mov rax, [rdx+24]
    00404854cmp rax, [rdx+32]
    00404858jbe 0x404873
    0040485a
    0040485aloc_40485a:
    0040485amov eax, [rcx-8]
    0040485dand eax, -16
    00404860mov eax, eax
    00404862lea rax, [rcx+rax]
    00404866movzx rcx, [rdx+2]
    0040486bsub rax, rcx
    0040486emov [r8], rax
    00404871jmp 0x40487e
    00404873
    00404873loc_404873:
    00404873mov rax, [rdx+24]
    00404877lea rax, [rax-1]
    0040487bmov [r8], rax
    0040487e
    0040487eloc_40487e:
    0040487eret
    00404840
    0040487f
    0040487f // align 0x10
    00404880
    00404880fn_404880:
    00404880push rbp
    00404881push rsi
    00404882push rbx
    00404883sub rsp, 64
    00404887mov rbp, rsp
    0040488amov rax, rcx
    0040488dmov rbx, rdx
    00404890xor ecx, ecx
    00404892
    00404892loc_404892:
    00404892mov r8, rax
    00404895mov r9l, 10
    0040489bxor edx, edx
    0040489ddiv r9
    004048a0mov rdx, rax
    004048a3add rdx, rdx
    004048a6lea rdx, [rdx+4*rdx]
    004048aasub r8, rdx
    004048adadd ecx, 1
    004048b0mov edx, 20
    004048b5sub edx, ecx
    004048b7mov edx, edx
    004048b9lea r8, [r8+48]
    004048bdmov [rbp+rdx+44], r8b
    004048c2test rax, rax
    004048c5jne 0x404892
    004048c7mov esi, ecx
    004048c9lea rcx, [rdx+rbp+44]
    004048cemov rdx, rbx
    004048d1mov r8, rsi
    004048d4call fn_405ac0
    004048d9lea rax, [rbx+rsi]
    004048ddlea rsp, [rbp+64]
    004048e1pop rbx
    004048e2pop rsi
    004048e3pop rbp
    004048e4ret
    00404880
    004048e5
    004048e5 // align 0x10
    004048f0
    004048f0fn_4048f0:
    004048f0push rsi
    004048f1push rbx
    004048f2sub rsp, 40
    004048f6mov rbx, rdx
    004048f9mov esi, r8l
    004048fcmov rdx, rbx
    004048ffmov r8, rsi
    00404902call fn_405ac0
    00404907lea rax, [rbx+rsi]
    0040490badd rsp, 40
    0040490fpop rbx
    00404910pop rsi
    00404911ret
    004048f0
    00404912
    00404912 // align 0x10
    00404920
    00404920fn_404920:
    00404920push rbx
    00404921sub rsp, 32
    00404925mov rbx, rdx
    00404928test rcx, rcx
    0040492bje 0x404946
    0040492dmov rax, [rcx-136]
    00404934lea rcx, [rax+1]
    00404938mov rdx, rbx
    0040493bmovzx r8, [rax]
    0040493fcall fn_4048f0
    00404944jmp 0x404964
    00404946
    00404946loc_404946:
    00404946mov rcx, [rip+0x54753]
    0040494dcall fn_40c580
    00404952mov rcx, [rip+0x54747]
    00404959mov rdx, rbx
    0040495cmov r8l, eax
    0040495fcall fn_4048f0
    00404964
    00404964loc_404964:
    00404964add rsp, 32
    00404968pop rbx
    00404969ret
    00404920
    0040496a
    0040496a // align 0x10
    00404970
    00404970fn_404970:
    00404970push rbp
    00404971push rbx
    00404972sub rsp, 40
    00404976mov rbp, rsp
    00404979mov rbx, rcx
    0040497cmov rax, rdx
    0040497fcmp rax, 65535
    00404986jbe 0x4049f6
    00404988test rax, 3
    0040498fjne 0x4049f6
    00404991mov rax, [rbx+32]
    00404995mov rcx, rdx
    00404998cmp rax, rcx
    0040499bja 0x4049ae
    0040499dmov r8, [rbx+56]
    004049a1lea rax, [rax+r8]
    004049a5lea rcx, [rcx+8]
    004049a9cmp rax, rcx
    004049acjae 0x4049c8
    004049ae
    004049aeloc_4049ae:
    004049aemov [rbx+56], 0
    004049b6mov rcx, rdx
    004049b9lea rdx, [rbx+32]
    004049bdmov r8l, 48
    004049c3call VirtualQuery
    004049c8
    004049c8loc_4049c8:
    004049c8cmp [rbx+56], 8
    004049cdjb 0x4049ee
    004049cfcmp [rbx+64], 4096
    004049d6jne 0x4049ee
    004049d8mov eax, [rbx+68]
    004049dbtest eax, 246
    004049e1je 0x4049ee
    004049e3mov eax, [rbx+68]
    004049e6test eax, 256
    004049ecje 0x4049f2
    004049ee
    004049eeloc_4049ee:
    004049eexor eax, eax
    004049f0jmp 0x4049f8
    004049f2
    004049f2loc_4049f2:
    004049f2mov al, 1
    004049f4jmp 0x4049f8
    004049f6
    004049f6loc_4049f6:
    004049f6xor eax, eax
    004049f8
    004049f8loc_4049f8:
    004049f8lea rsp, [rbp+40]
    004049fcpop rbx
    004049fdpop rbp
    004049feret
    00404970
    004049ff
    004049ff // align 0x10
    00404a00
    00404a00fn_404a00:
    00404a00push rbp
    00404a01push r13
    00404a03push rdi
    00404a04push rsi
    00404a05push rbx
    00404a06sub rsp, 32
    00404a0amov rbp, rsp
    00404a0dmov rbx, rcx
    00404a10mov rsi, rdx
    00404a13mov edi, r8l
    00404a16cmp edi, 1000
    00404a1cjge 0x404a81
    00404a1emov rcx, rbx
    00404a21lea rdx, [rsi-200]
    00404a28call fn_404970
    00404a2dtest al, al
    00404a2fje 0x404a81
    00404a31mov rcx, rbx
    00404a34lea rdx, [rsi-120]
    00404a38call fn_404970
    00404a3dtest al, al
    00404a3fje 0x404a81
    00404a41mov r13, [rsi-120]
    00404a45cmp [rsi-200], rsi
    00404a4cjne 0x404a79
    00404a4etest r13, r13
    00404a51je 0x404a7d
    00404a53mov rcx, rbx
    00404a56mov rdx, r13
    00404a59call fn_404970
    00404a5etest al, al
    00404a60je 0x404a79
    00404a62mov rcx, rbx
    00404a65mov rdx, [r13]
    00404a69mov r8l, edi
    00404a6cadd r8l, 1
    00404a70call fn_404a00
    00404a75test al, al
    00404a77jne 0x404a7d
    00404a79
    00404a79loc_404a79:
    00404a79xor eax, eax
    00404a7bjmp 0x404a83
    00404a7d
    00404a7dloc_404a7d:
    00404a7dmov al, 1
    00404a7fjmp 0x404a83
    00404a81
    00404a81loc_404a81:
    00404a81xor eax, eax
    00404a83
    00404a83loc_404a83:
    00404a83lea rsp, [rbp+32]
    00404a87pop rbx
    00404a88pop rsi
    00404a89pop rdi
    00404a8apop r13
    00404a8cpop rbp
    00404a8dret
    00404a00
    00404a8e
    00404a8e // align 0x10
    00404a90
    00404a90fn_404a90:
    00404a90push rbp
    00404a91push rbx
    00404a92sub rsp, 88
    00404a96mov rbp, rsp
    00404a99mov rbx, [rcx]
    00404a9cmov [rbp+56], 0
    00404aa4mov rcx, rbp
    00404aa7mov rdx, rbx
    00404aaaxor r8, r8
    00404aadcall fn_404a00
    00404ab2test al, al
    00404ab4jne 0x404ab8
    00404ab6xor ebx, ebx
    00404ab8
    00404ab8loc_404ab8:
    00404ab8mov rax, rbx
    00404abblea rsp, [rbp+88]
    00404abfpop rbx
    00404ac0pop rbp
    00404ac1ret
    00404a90
    00404ac2
    00404ac2 // align 0x10
    00404ad0
    00404ad0fn_404ad0:
    00404ad0sub rsp, 40
    00404ad4cmp [rip+0x605be], 0
    00404adbje 0x404b1a
    00404addjmp 0x404b09
    00404adf
    00404adfloc_404adf:
    00404adfcmp [rip+0x60f3f], 0
    00404ae6jne 0x404b09
    00404ae8xor ecx, ecx
    00404aeacall Sleep
    00404aefxor eax, eax
    00404af1mov cl, 1
    00404af3lock cmpxchg [rip+0x65165], cl
    00404afbtest al, al
    00404afdje 0x404b19
    00404affmov ecx, 10
    00404b04call Sleep
    00404b09
    00404b09loc_404b09:
    00404b09xor eax, eax
    00404b0bmov cl, 1
    00404b0dlock cmpxchg [rip+0x6514b], cl
    00404b15test al, al
    00404b17jne 0x404adf
    00404b19
    00404b19loc_404b19:
    00404b19nop
    00404b1a
    00404b1aloc_404b1a:
    00404b1acmp [rip+0x65136], 0
    00404b22jne 0x404b43
    00404b24xor ecx, ecx
    00404b26mov edx, 0x10000
    00404b2bmov r8l, 4096
    00404b31mov r9l, 4
    00404b37call VirtualAlloc
    00404b3cmov [rip+0x65115], rax
    00404b43
    00404b43loc_404b43:
    00404b43cmp [rip+0x6510d], 0
    00404b4bsetne al
    00404b4eadd rsp, 40
    00404b52ret
    00404ad0
    00404b53
    00404b53 // align 0x10
    00404b60
    00404b60fn_404b60:
    00404b60push rbx
    00404b61sub rsp, 32
    00404b65mov rbx, rcx
    00404b68call fn_404ad0
    00404b6dtest al, al
    00404b6fje 0x404ba4
    00404b71mov rax, [rip+0x650e0]
    00404b78cmp [rax], 8190
    00404b7ejge 0x404ba4
    00404b80mov rax, [rip+0x650d1]
    00404b87mov rcx, [rip+0x650ca]
    00404b8emovsxd rcx, [rcx]
    00404b91mov [rax+8*rcx+8], rbx
    00404b96mov rax, [rip+0x650bb]
    00404b9dadd [rax], 1
    00404ba0mov al, 1
    00404ba2jmp 0x404ba6
    00404ba4
    00404ba4loc_404ba4:
    00404ba4xor eax, eax
    00404ba6
    00404ba6loc_404ba6:
    00404ba6mov [rip+0x650b3], 0
    00404badadd rsp, 32
    00404bb1pop rbx
    00404bb2ret
    00404b60
    00404bb3
    00404bb3 // align 0x10
    00404bc0
    00404bc0fn_404bc0:
    00404bc0push rsi
    00404bc1push rbx
    00404bc2sub rsp, 40
    00404bc6mov rbx, rcx
    00404bc9xor esi, esi
    00404bcccmp [rip+0x65084], 0
    00404bd4je 0x404c53
    00404bd6call fn_404ad0
    00404bdbtest al, al
    00404bddje 0x404c53
    00404bdfxor ecx, ecx
    00404be1mov rax, [rip+0x65070]
    00404be8mov edx, [rax]
    00404beasub edx, 1
    00404bedmov eax, ecx
    00404befcmp eax, edx
    00404bf1jg 0x404c4b
    00404bf3sub edx, ecx
    00404bf5add edx, 1
    00404bf8
    00404bf8loc_404bf8:
    00404bf8movsxd rcx, eax
    00404bfbmov r8, [rip+0x65056]
    00404c02cmp [r8+8*rcx+8], rbx
    00404c07jne 0x404c41
    00404c09mov rax, [rip+0x65048]
    00404c10mov rdx, [rip+0x65041]
    00404c17mov r8, [rip+0x6503a]
    00404c1emov r8l, [r8]
    00404c21sub r8l, 1
    00404c25movsxd r8, r8l
    00404c28mov rdx, [rdx+8*r8+8]
    00404c2dmov [rax+8*rcx+8], rdx
    00404c32mov rax, [rip+0x6501f]
    00404c39sub [rax], 1
    00404c3cmov sil, 1
    00404c3fjmp 0x404c4b
    00404c41
    00404c41loc_404c41:
    00404c41add eax, 1
    00404c44sub edx, 1
    00404c47test edx, edx
    00404c49jne 0x404bf8
    00404c4b
    00404c4bloc_404c4b:
    00404c4bnop
    00404c4cmov [rip+0x6500d], 0
    00404c53
    00404c53loc_404c53:
    00404c53mov eax, esi
    00404c56add rsp, 40
    00404c5apop rbx
    00404c5bpop rsi
    00404c5cret
    00404bc0
    00404c5d
    00404c5d // align 0x10
    00404c60
    00404c60fn_404c60:
    00404c60push rbp
    00404c61push r13
    00404c63push rdi
    00404c64push rsi
    00404c65push rbx
    00404c66sub rsp, 48
    00404c6amov rbp, rsp
    00404c6dmov rbx, rcx
    00404c70mov rsi, rdx
    00404c73lea rax, [rip+0x5445e]
    00404c7amov rcx, [rsi]
    00404c7dsub rcx, rax
    00404c80shr rcx, 6
    00404c84mov eax, ecx
    00404c86mov eax, eax
    00404c88shl rax, 9
    00404c8clea r13, [rbx+8*rax+0x10050]
    00404c94mov rcx, rsi
    00404c97lea rdx, [rbp+40]
    00404c9blea r8, [rbp+32]
    00404c9fcall fn_404840
    00404ca4jmp 0x404e38
    00404ca9
    00404ca9loc_404ca9:
    00404ca9mov rax, [rbp+40]
    00404cadmov rax, [rax-8]
    00404cb1test rax, 1
    00404cb8jne 0x404e2c
    00404cbemov rcx, [rbp+40]
    00404cc2call fn_404bc0
    00404cc7test al, al
    00404cc9jne 0x404e2c
    00404ccfmov [rbx+0x1004f], 0
    00404cd6xor edi, edi
    00404cd8mov rcx, [rbp+40]
    00404cdccall fn_404a90
    00404ce1test rax, rax
    00404ce4jne 0x404ddb
    00404ceamov rax, [rbp+40]
    00404ceecmp [rax+8], 256
    00404cf5jge 0x404e1e
    00404cfbmov ecx, [rax+12]
    00404cfemovzx r8l, [rax+6]
    00404d03cmp r8l, 1
    00404d07je 0x404d13
    00404d09cmp r8l, 2
    00404d0djne 0x404e1e
    00404d13
    00404d13loc_404d13:
    00404d13test ecx, ecx
    00404d15jle 0x404e1e
    00404d1bmov rax, [rsi]
    00404d1emovzx eax, [rax+2]
    00404d22sub eax, 24
    00404d25cdq
    00404d26idiv r8l
    00404d29cmp eax, ecx
    00404d2bjle 0x404e1e
    00404d31mov r9b, 1
    00404d34cmp r8l, 1
    00404d38jne 0x404d8f
    00404d3amov rax, [rbp+40]
    00404d3elea rdx, [rax+16]
    00404d42mov r8l, 1
    00404d48mov eax, r8l
    00404d4bcmp eax, ecx
    00404d4djg 0x404d72
    00404d4fsub ecx, r8l
    00404d52add ecx, 1
    00404d55
    00404d55loc_404d55:
    00404d55test r9b, r9b
    00404d58je 0x404d5f
    00404d5acmp [rdx], 32
    00404d5djae 0x404d64
    00404d5f
    00404d5floc_404d5f:
    00404d5fxor r9, r9
    00404d62jmp 0x404d67
    00404d64
    00404d64loc_404d64:
    00404d64mov r9b, 1
    00404d67
    00404d67loc_404d67:
    00404d67add rdx, 1
    00404d6bsub ecx, 1
    00404d6etest ecx, ecx
    00404d70jne 0x404d55
    00404d72
    00404d72loc_404d72:
    00404d72nop
    00404d73test r9b, r9b
    00404d76je 0x404e1e
    00404d7ccmp [rdx], 0
    00404d7fjne 0x404e1e
    00404d85mov edi, 1
    00404d8ajmp 0x404e1e
    00404d8f
    00404d8floc_404d8f:
    00404d8fmov rax, [rbp+40]
    00404d93lea rdx, [rax+16]
    00404d97mov r8l, 1
    00404d9dmov eax, r8l
    00404da0cmp eax, ecx
    00404da2jg 0x404dc8
    00404da4sub ecx, r8l
    00404da7add ecx, 1
    00404daa
    00404daaloc_404daa:
    00404daatest r9b, r9b
    00404dadje 0x404db5
    00404dafcmp [rdx], 32
    00404db3jae 0x404dba
    00404db5
    00404db5loc_404db5:
    00404db5xor r9, r9
    00404db8jmp 0x404dbd
    00404dba
    00404dbaloc_404dba:
    00404dbamov r9b, 1
    00404dbd
    00404dbdloc_404dbd:
    00404dbdadd rdx, 2
    00404dc1sub ecx, 1
    00404dc4test ecx, ecx
    00404dc6jne 0x404daa
    00404dc8
    00404dc8loc_404dc8:
    00404dc8nop
    00404dc9test r9b, r9b
    00404dccje 0x404e1e
    00404dcecmp [rdx], 0
    00404dd2jne 0x404e1e
    00404dd4mov edi, 2
    00404dd9jmp 0x404e1e
    00404ddb
    00404ddbloc_404ddb:
    00404ddbmov edi, 3
    00404de0
    00404de0loc_404de0:
    00404de0movsxd rcx, edi
    00404de3mov rdx, rcx
    00404de6add rdx, rdx
    00404de9cmp [r13+8*rdx], rax
    00404deeje 0x404e06
    00404df0add rcx, rcx
    00404df3cmp [r13+8*rcx], 0
    00404df9je 0x404e06
    00404dfbadd edi, 1
    00404dfecmp edi, 255
    00404e04jle 0x404de0
    00404e06
    00404e06loc_404e06:
    00404e06nop
    00404e07cmp edi, 255
    00404e0djg 0x404e1c
    00404e0fmovsxd rcx, edi
    00404e12add rcx, rcx
    00404e15mov [r13+8*rcx], rax
    00404e1ajmp 0x404e1e
    00404e1c
    00404e1cloc_404e1c:
    00404e1cxor edi, edi
    00404e1e
    00404e1eloc_404e1e:
    00404e1emovsxd rdi, edi
    00404e21add rdi, rdi
    00404e24lea rax, [r13+8*rdi+8]
    00404e29add [rax], 1
    00404e2c
    00404e2cloc_404e2c:
    00404e2cmov rax, [rsi]
    00404e2fmovzx rax, [rax+2]
    00404e34add [rbp+40], rax
    00404e38
    00404e38loc_404e38:
    00404e38mov rax, [rbp+40]
    00404e3ccmp rax, [rbp+32]
    00404e40jbe 0x404ca9
    00404e46lea rsp, [rbp+48]
    00404e4apop rbx
    00404e4bpop rsi
    00404e4cpop rdi
    00404e4dpop r13
    00404e4fpop rbp
    00404e50ret
    00404c60
    00404e51
    00404e51 // align 0x10
    00404e60
    00404e60fn_404e60:
    00404e60push rbp
    00404e61push r14
    00404e63push r13
    00404e65push rdi
    00404e66push rsi
    00404e67push rbx
    00404e68mov eax, 4008
    00404e6d
    00404e6dloc_404e6d:
    00404e6dsub rax, 4096
    00404e73mov [rsp+rax], al
    00404e76cmp rax, 0xfffffffffffc1fa8
    00404e7dja 0x404e6d
    00404e7fsub rsp, 0x3e058
    00404e86mov rbp, rsp
    00404e89lea rcx, [rbp+72]
    00404e8dmov edx, 32768
    00404e92xor r8, r8
    00404e95call fn_4069b0
    00404e9alea rcx, [rbp+0x10050]
    00404ea1mov edx, 0x2e000
    00404ea6xor r8, r8
    00404ea9call fn_4069b0
    00404eaelea rcx, [rbp+32840]
    00404eb5mov edx, 32768
    00404ebaxor r8, r8
    00404ebdcall fn_4069b0
    00404ec2xor eax, eax
    00404ec4mov [rbp+32], eax
    00404ec7mov [rbp+0x1004f], 1
    00404ecemov rdi, [rip+0x60cab]
    00404ed5jmp 0x404f67
    00404eda
    00404edaloc_404eda:
    00404edamov rcx, rdi
    00404eddcall fn_404800
    00404ee2mov rsi, rax
    00404ee5test rsi, rsi
    00404ee8je 0x404f62
    00404eea
    00404eealoc_404eea:
    00404eeamov rax, [rsi-8]
    00404eeemov rcx, rax
    00404ef1test rcx, 1
    00404ef8jne 0x404f52
    00404efamov rcx, rax
    00404efdtest rcx, 4
    00404f04je 0x404f13
    00404f06mov rcx, rbp
    00404f09mov rdx, rsi
    00404f0ccall fn_404c60
    00404f11jmp 0x404f52
    00404f13
    00404f13loc_404f13:
    00404f13mov ecx, [rbp+32]
    00404f16cmp ecx, 4096
    00404f1cjge 0x404f52
    00404f1emov ebx, eax
    00404f20and ebx, -16
    00404f23sub ebx, 8
    00404f26mov rcx, rsi
    00404f29call fn_404bc0
    00404f2etest al, al
    00404f30jne 0x404f52
    00404f32mov [rbp+0x1004f], 0
    00404f39mov eax, [rbp+32]
    00404f3cmovsxd rax, eax
    00404f3fmov ebx, ebx
    00404f41mov [rbp+8*rax+32840], rbx
    00404f49mov eax, [rbp+32]
    00404f4cadd eax, 1
    00404f4fmov [rbp+32], eax
    00404f52
    00404f52loc_404f52:
    00404f52mov rcx, rsi
    00404f55call fn_4047e0
    00404f5amov rsi, rax
    00404f5dtest rsi, rsi
    00404f60jne 0x404eea
    00404f62
    00404f62loc_404f62:
    00404f62nop
    00404f63mov rdi, [rdi+8]
    00404f67
    00404f67loc_404f67:
    00404f67lea rax, [rip+0x60c0a]
    00404f6ecmp rdi, rax
    00404f71jne 0x404eda
    00404f77mov rbx, [rip+0x64cc2]
    00404f7ejmp 0x404fbb
    00404f80
    00404f80loc_404f80:
    00404f80lea rcx, [rbx+32]
    00404f84call fn_404bc0
    00404f89test al, al
    00404f8bjne 0x404fb7
    00404f8dmov [rbp+0x1004f], 0
    00404f94mov rax, [rbx+24]
    00404f98and rax, -16
    00404f9clea rax, [rax-40]
    00404fa0mov ecx, [rbp+32]
    00404fa3movsxd rcx, ecx
    00404fa6mov [rbp+8*rcx+32840], rax
    00404faemov eax, [rbp+32]
    00404fb1add eax, 1
    00404fb4mov [rbp+32], eax
    00404fb7
    00404fb7loc_404fb7:
    00404fb7mov rbx, [rbx+8]
    00404fbb
    00404fbbloc_404fbb:
    00404fbblea rax, [rip+0x64c76]
    00404fc2cmp rbx, rax
    00404fc5je 0x404fd2
    00404fc7mov eax, [rbp+32]
    00404fcacmp eax, 4096
    00404fd0jl 0x404f80
    00404fd2
    00404fd2loc_404fd2:
    00404fd2cmp [rbp+0x1004f], 0
    00404fd9jne 0x40535e
    00404fdfxor eax, eax
    00404fe1mov [rbp+39], al
    00404fe4xor eax, eax
    00404fe6mov [rbp+60], eax
    00404fe9mov rcx, [rip+0x54090]
    00404ff0call fn_40c580
    00404ff5mov rcx, [rip+0x54084]
    00404ffclea rdx, [rbp+72]
    00405000mov r8l, eax
    00405003call fn_4048f0
    00405008mov [rbp+40], rax
    0040500cmov r14l, 46
    00405012lea rsi, [rip+0x540c1]
    00405019lea rdi, [rbp+0x11048]
    00405020
    00405020loc_405020:
    00405020movzx ebx, [rsi]
    00405023sub ebx, 8
    00405026xor eax, eax
    00405028mov [rbp+55], al
    0040502bmov eax, 255
    00405030mov [rbp+56], eax
    00405033mov r13, rdi
    00405036
    00405036loc_405036:
    00405036lea rax, [rbp+30791]
    0040503dmov rcx, [rbp+40]
    00405041cmp rcx, rax
    00405044mov [rbp+40], rcx
    00405048ja 0x405221
    0040504ecmp [r13], 0
    00405053jbe 0x405208
    00405059movzx rax, [rbp+39]
    0040505etest al, al
    00405060jne 0x40508a
    00405062mov rcx, [rip+0x5401f]
    00405069call fn_40c580
    0040506emov rcx, [rip+0x54013]
    00405075mov rdx, [rbp+40]
    00405079mov r8l, eax
    0040507ccall fn_4048f0
    00405081mov [rbp+40], rax
    00405085mov al, 1
    00405087mov [rbp+39], al
    0040508a
    0040508aloc_40508a:
    0040508amovzx rax, [rbp+55]
    0040508ftest al, al
    00405091jne 0x405120
    00405097mov rax, [rbp+40]
    0040509bmov [rax], 13
    0040509eadd rax, 1
    004050a2mov [rbp+40], rax
    004050a6mov [rax], 10
    004050a9add rax, 1
    004050admov [rbp+40], rax
    004050b1mov ecx, [rbp+60]
    004050b4add ecx, 1
    004050b7mov ecx, ecx
    004050b9mov rdx, [rbp+40]
    004050bdcall fn_404880
    004050c2mov [rbp+40], rax
    004050c6mov [rax], 32
    004050c9add rax, 1
    004050cdmov [rbp+40], rax
    004050d1mov [rax], 45
    004050d4add rax, 1
    004050d8mov [rbp+40], rax
    004050dcmov [rax], 32
    004050dfadd rax, 1
    004050e3mov [rbp+40], rax
    004050e7mov ecx, ebx
    004050e9mov rdx, [rbp+40]
    004050edcall fn_404880
    004050f2mov [rbp+40], rax
    004050f6mov rcx, [rip+0x53f9b]
    004050fdcall fn_40c580
    00405102mov rcx, [rip+0x53f8f]
    00405109mov rdx, [rbp+40]
    0040510dmov r8l, eax
    00405110call fn_4048f0
    00405115mov [rbp+40], rax
    00405119mov al, 1
    0040511bmov [rbp+55], al
    0040511ejmp 0x40513a
    00405120
    00405120loc_405120:
    00405120mov rax, [rbp+40]
    00405124mov [rax], 44
    00405127add rax, 1
    0040512bmov [rbp+40], rax
    0040512fmov [rax], 32
    00405132add rax, 1
    00405136mov [rbp+40], rax
    0040513a
    0040513aloc_40513a:
    0040513amov eax, [rbp+56]
    0040513dsub eax, 1
    00405140cmp eax, -1
    00405143je 0x405152
    00405145test eax, eax
    00405147je 0x405177
    00405149sub eax, 1
    0040514ctest eax, eax
    0040514ejne 0x4051c1
    00405150jmp 0x40519c
    00405152
    00405152loc_405152:
    00405152mov rcx, [rip+0x53f47]
    00405159call fn_40c580
    0040515emov rcx, [rip+0x53f3b]
    00405165mov rdx, [rbp+40]
    00405169mov r8l, eax
    0040516ccall fn_4048f0
    00405171mov [rbp+40], rax
    00405175jmp 0x4051d2
    00405177
    00405177loc_405177:
    00405177mov rcx, [rip+0x53f2a]
    0040517ecall fn_40c580
    00405183mov rcx, [rip+0x53f1e]
    0040518amov rdx, [rbp+40]
    0040518emov r8l, eax
    00405191call fn_4048f0
    00405196mov [rbp+40], rax
    0040519ajmp 0x4051d2
    0040519c
    0040519cloc_40519c:
    0040519cmov rcx, [rip+0x53f0d]
    004051a3call fn_40c580
    004051a8mov rcx, [rip+0x53f01]
    004051afmov rdx, [rbp+40]
    004051b3mov r8l, eax
    004051b6call fn_4048f0
    004051bbmov [rbp+40], rax
    004051bfjmp 0x4051d2
    004051c1
    004051c1loc_4051c1:
    004051c1mov rcx, [r13-8]
    004051c5mov rdx, [rbp+40]
    004051c9call fn_404920
    004051cemov [rbp+40], rax
    004051d2
    004051d2loc_4051d2:
    004051d2mov rax, [rbp+40]
    004051d6mov [rax], 32
    004051d9add rax, 1
    004051ddmov [rbp+40], rax
    004051e1mov [rax], 120
    004051e4add rax, 1
    004051e8mov [rbp+40], rax
    004051ecmov [rax], 32
    004051efadd rax, 1
    004051f3mov [rbp+40], rax
    004051f7mov ecx, [r13]
    004051fbmov rdx, [rbp+40]
    004051ffcall fn_404880
    00405204mov [rbp+40], rax
    00405208
    00405208loc_405208:
    00405208mov eax, [rbp+56]
    0040520bsub eax, 1
    0040520emov [rbp+56], eax
    00405211sub r13, 16
    00405215mov eax, [rbp+56]
    00405218cmp eax, -1
    0040521bjne 0x405036
    00405221
    00405221loc_405221:
    00405221nop
    00405222movzx rax, [rbp+55]
    00405227test al, al
    00405229jne 0x405241
    0040522bcmp [rip+0x54a26], 0
    00405232je 0x405241
    00405234mov eax, ebx
    00405236add eax, 8
    00405239test eax, 15
    0040523fjne 0x405244
    00405241
    00405241loc_405241:
    00405241mov [rbp+60], ebx
    00405244
    00405244loc_405244:
    00405244add rdi, 4096
    0040524badd rsi, 64
    0040524fsub r14l, 1
    00405253test r14l, r14l
    00405256jne 0x405020
    0040525cnop
    0040525dmov eax, [rbp+32]
    00405260test eax, eax
    00405262jle 0x40532f
    00405268movzx rax, [rbp+39]
    0040526dtest al, al
    0040526fje 0x4052a1
    00405271mov rax, [rbp+40]
    00405275mov [rax], 13
    00405278add rax, 1
    0040527cmov [rbp+40], rax
    00405280mov [rax], 10
    00405283add rax, 1
    00405287mov [rbp+40], rax
    0040528bmov [rax], 13
    0040528eadd rax, 1
    00405292mov [rbp+40], rax
    00405296mov [rax], 10
    00405299add rax, 1
    0040529dmov [rbp+40], rax
    004052a1
    004052a1loc_4052a1:
    004052a1mov rcx, [rip+0x53de8]
    004052a8call fn_40c580
    004052admov rcx, [rip+0x53ddc]
    004052b4mov rdx, [rbp+40]
    004052b8mov r8l, eax
    004052bbcall fn_4048f0
    004052c0mov [rbp+40], rax
    004052c4xor eax, eax
    004052c6mov esi, [rbp+32]
    004052c9sub esi, 1
    004052ccmov ebx, eax
    004052cecmp ebx, esi
    004052d0ja 0x40532e
    004052d2sub esi, eax
    004052d4add esi, 1
    004052d7lea rdi, [rbp+32840]
    004052de
    004052deloc_4052de:
    004052detest ebx, ebx
    004052e0je 0x4052fc
    004052e2mov rax, [rbp+40]
    004052e6mov [rax], 44
    004052e9add rax, 1
    004052edmov [rbp+40], rax
    004052f1mov [rax], 32
    004052f4add rax, 1
    004052f8mov [rbp+40], rax
    004052fc
    004052fcloc_4052fc:
    004052fcmov rcx, [rdi]
    004052ffmov rdx, [rbp+40]
    00405303call fn_404880
    00405308mov [rbp+40], rax
    0040530clea rax, [rbp+30791]
    00405313mov rcx, [rbp+40]
    00405317cmp rcx, rax
    0040531amov [rbp+40], rcx
    0040531eja 0x40532e
    00405320add ebx, 1
    00405323add rdi, 8
    00405327sub esi, 1
    0040532atest esi, esi
    0040532cjne 0x4052de
    0040532e
    0040532eloc_40532e:
    0040532enop
    0040532f
    0040532floc_40532f:
    0040532fmov rcx, [rip+0x53d82]
    00405336call fn_40c580
    0040533bmov rcx, [rip+0x53d76]
    00405342mov rdx, [rbp+40]
    00405346mov r8l, eax
    00405349call fn_4048f0
    0040534elea rcx, [rbp+72]
    00405352mov rdx, [rip+0x53d67]
    00405359call fn_404700
    0040535e
    0040535eloc_40535e:
    0040535elea rsp, [rbp+0x3e058]
    00405365pop rbx
    00405366pop rsi
    00405367pop rdi
    00405368pop r13
    0040536apop r14
    0040536cpop rbp
    0040536dret
    00404e60
    0040536e
    0040536e // align 0x10
    00405370
    00405370fn_405370:
    00405370xor edx, edx
    00405372xor ecx, ecx
    00405374lea r9, [rip+0x53d5f]
    0040537b
    0040537bloc_40537b:
    0040537bcmp [rip+0x548d6], 0
    00405382je 0x40538f
    00405384movzx rax, [r9]
    00405388test ax, 15
    0040538djne 0x4053ba
    0040538f
    0040538floc_40538f:
    0040538fmovzx r8l, [r9]
    00405393shr r8l, 3
    00405397mov al, 4
    00405399imul cl
    0040539bcmp edx, r8l
    0040539ejae 0x4053b6
    004053a0
    004053a0loc_4053a0:
    004053a0lea r10, [rip+0x60685]
    004053a7mov r11l, edx
    004053aamov [r10+r11], al
    004053aeadd edx, 1
    004053b1cmp edx, r8l
    004053b4jb 0x4053a0
    004053b6
    004053b6loc_4053b6:
    004053b6nop
    004053b7mov edx, r8l
    004053ba
    004053baloc_4053ba:
    004053baadd ecx, 1
    004053bdadd r9, 64
    004053c1cmp ecx, 46
    004053c4jne 0x40537b
    004053c6nop
    004053c7ret
    00405370
    004053c8
    004053c8 // align 0x10
    004053d0
    004053d0fn_4053d0:
    004053d0sub rsp, 40
    004053d4mov r9l, 46
    004053dalea r8, [rip+0x53d27]
    004053e1
    004053e1loc_4053e1:
    004053e1cmp [r8], 0
    004053e5jne 0x4053f1
    004053e7lea rax, [rip-7246]
    004053eemov [r8], rax
    004053f1
    004053f1loc_4053f1:
    004053f1lea rax, [r8-48]
    004053f5mov [r8-32], rax
    004053f9lea rax, [r8-48]
    004053fdmov [r8-40], rax
    00405401mov [r8-16], 0
    00405409mov [r8-24], 1
    00405411movzx eax, [r8-46]
    00405416add eax, eax
    00405418add eax, eax
    0040541alea rax, [rax+2*rax]
    0040541eadd eax, 255
    00405424and eax, -256
    0040542aadd eax, 48
    0040542dcmp eax, 2864
    00405433jae 0x40543a
    00405435mov eax, 2864
    0040543a
    0040543aloc_40543a:
    0040543aadd eax, 1232
    00405440shr eax, 13
    00405443cmp eax, 7
    00405446jbe 0x40544d
    00405448mov eax, 7
    0040544d
    0040544dloc_40544d:
    0040544dmov edx, 255
    00405452mov ecx, eax
    00405454shl edx, cl
    00405456mov [r8-47], dl
    0040545ashl eax, 13
    0040545dadd ax, 2864
    00405462mov [r8-44], ax
    00405467movzx rcx, [r8-46]
    0040546cmovzx eax, cx
    0040546fshl eax, 4
    00405472lea rax, [rax+2*rax]
    00405476add eax, 255
    0040547cand eax, -256
    00405482add eax, 48
    00405485cmp eax, 29488
    0040548bjae 0x405492
    0040548dmov eax, 29488
    00405492
    00405492loc_405492:
    00405492cmp eax, 65328
    00405498jbe 0x40549f
    0040549amov eax, 65328
    0040549f
    0040549floc_40549f:
    0040549fsub eax, 48
    004054a2movzx r10l, cx
    004054a6xor edx, edx
    004054a8div r10l
    004054abimul ax, cx
    004054afadd ax, 255
    004054b4and ax, -256
    004054b9add ax, 48
    004054bdmov [r8-42], ax
    004054c2add r8, 64
    004054c6sub r9l, 1
    004054catest r9l, r9l
    004054cdjne 0x4053e1
    004054d3nop
    004054d4call fn_405370
    004054d9lea rax, [rip+0x60698]
    004054e0mov [rip+0x60691], rax
    004054e7lea rax, [rip+0x6068a]
    004054eemov [rip+0x6068b], rax
    004054f5mov edx, 1024
    004054falea rcx, [rip+0x6072f]
    00405501
    00405501loc_405501:
    00405501mov rax, rcx
    00405504mov [rax], rax
    00405507mov [rax+8], rax
    0040550badd rcx, 16
    0040550fsub edx, 1
    00405512test edx, edx
    00405514jne 0x405501
    00405516nop
    00405517lea rax, [rip+0x6471a]
    0040551emov [rip+0x64713], rax
    00405525lea rax, [rip+0x6470c]
    0040552cmov [rip+0x6470d], rax
    00405533add rsp, 40
    00405537ret
    004053d0
    00405538
    00405538 // align 0x10
    00405540
    00405540fn_405540:
    00405540push rbx
    00405541sub rsp, 32
    00405545mov rax, [rip+0x60634]
    0040554cjmp 0x405565
    0040554e
    0040554eloc_40554e:
    0040554emov rbx, [rax+8]
    00405552mov rcx, rax
    00405555xor edx, edx
    00405557mov r8l, 32768
    0040555dcall VirtualFree
    00405562mov rax, rbx
    00405565
    00405565loc_405565:
    00405565lea rcx, [rip+0x6060c]
    0040556ccmp rax, rcx
    0040556fjne 0x40554e
    00405571mov ecx, 46
    00405576lea rax, [rip+0x53b5b]
    0040557d
    0040557dloc_40557d:
    0040557dmov [rax+16], rax
    00405581mov [rax+8], rax
    00405585mov [rax+24], 1
    0040558dmov [rax+32], 0
    00405595add rax, 64
    00405599sub ecx, 1
    0040559ctest ecx, ecx
    0040559ejne 0x40557d
    004055a0nop
    004055a1lea rax, [rip+0x605d0]
    004055a8mov [rip+0x605c9], rax
    004055aflea rax, [rip+0x605c2]
    004055b6mov [rip+0x605c3], rax
    004055bdmov edx, 1024
    004055c2lea rcx, [rip+0x60667]
    004055c9
    004055c9loc_4055c9:
    004055c9mov rax, rcx
    004055ccmov [rax], rax
    004055cfmov [rax+8], rax
    004055d3add rcx, 16
    004055d7sub edx, 1
    004055datest edx, edx
    004055dcjne 0x4055c9
    004055denop
    004055dfmov [rip+0x605c3], 0
    004055e9lea rcx, [rip+0x605c0]
    004055f0mov edx, 128
    004055f5xor r8, r8
    004055f8call fn_4069b0
    004055fdmov [rip+0x605a1], 0
    00405607mov rax, [rip+0x64632]
    0040560ejmp 0x405627
    00405610
    00405610loc_405610:
    00405610mov rbx, [rax+8]
    00405614mov rcx, rax
    00405617xor edx, edx
    00405619mov r8l, 32768
    0040561fcall VirtualFree
    00405624mov rax, rbx
    00405627
    00405627loc_405627:
    00405627lea rcx, [rip+0x6460a]
    0040562ecmp rax, rcx
    00405631jne 0x405610
    00405633lea rax, [rip+0x645fe]
    0040563amov [rip+0x645f7], rax
    00405641lea rax, [rip+0x645f0]
    00405648mov [rip+0x645f1], rax
    0040564fadd rsp, 32
    00405653pop rbx
    00405654ret
    00405540
    00405655
    00405655 // align 0x10
    00405660
    00405660fn_405660:
    00405660sub rsp, 40
    00405664cmp [rip+0x645fc], 0
    0040566cje 0x405685
    0040566emov rcx, [rip+0x645f3]
    00405675call CloseHandle
    0040567amov [rip+0x645e3], 0
    00405685
    00405685loc_405685:
    00405685cmp [rip+0x60398], 0
    0040568cje 0x405693
    0040568ecall fn_404e60
    00405693
    00405693loc_405693:
    00405693cmp [rip+0x645bd], 0
    0040569bje 0x4056bc
    0040569dmov rcx, [rip+0x645b4]
    004056a4xor edx, edx
    004056a6mov r8l, 32768
    004056accall VirtualFree
    004056b1mov [rip+0x6459c], 0
    004056bc
    004056bcloc_4056bc:
    004056bccall fn_405540
    004056c1add rsp, 40
    004056c5ret
    00405660
    004056c6
    004056c6 // align 0x10
    004056d0
    004056d0fn_4056d0:
    004056d0push rbx
    004056d1sub rsp, 32
    004056d5test rcx, rcx
    004056d8jle 0x4056f1
    004056dacall [rip+0x54598]
    004056e0mov rbx, rax
    004056e3test rbx, rbx
    004056e6jne 0x4056f3
    004056e8mov cl, 1
    004056eacall fn_405a20
    004056efjmp 0x4056f3
    004056f1
    004056f1loc_4056f1:
    004056f1xor ebx, ebx
    004056f3
    004056f3loc_4056f3:
    004056f3mov rax, rbx
    004056f6add rsp, 32
    004056fapop rbx
    004056fbret
    004056d0
    004056fc
    004056fc // align 0x10
    00405700
    00405700fn_405700:
    00405700push rbx
    00405701sub rsp, 32
    00405705test rcx, rcx
    00405708jg 0x40570e
    0040570axor ebx, ebx
    0040570cjmp 0x405723
    0040570e
    0040570eloc_40570e:
    0040570ecall [rip+0x5454c]
    00405714mov rbx, rax
    00405717test rbx, rbx
    0040571ajne 0x405723
    0040571cmov cl, 1
    0040571ecall fn_405a20
    00405723
    00405723loc_405723:
    00405723mov rax, rbx
    00405726add rsp, 32
    0040572apop rbx
    0040572bret
    00405700
    0040572c
    0040572c // align 0x10
    00405730
    00405730fn_405730:
    00405730push rbx
    00405731sub rsp, 32
    00405735test rcx, rcx
    00405738jne 0x40573e
    0040573axor ebx, ebx
    0040573cjmp 0x405751
    0040573e
    0040573eloc_40573e:
    0040573ecall [rip+0x54524]
    00405744mov ebx, eax
    00405746test ebx, ebx
    00405748je 0x405751
    0040574amov cl, 2
    0040574ccall fn_405a20
    00405751
    00405751loc_405751:
    00405751mov eax, ebx
    00405753add rsp, 32
    00405757pop rbx
    00405758ret
    00405730
    00405759
    00405759 // align 0x10
    00405760
    00405760fn_405760:
    00405760push rsi
    00405761push rbx
    00405762sub rsp, 40
    00405766mov rbx, rcx
    00405769cmp [rbx], 0
    0040576dje 0x4057a9
    0040576ftest rdx, rdx
    00405772jle 0x40578e
    00405774mov rcx, [rbx]
    00405777call [rip+0x544f3]
    0040577dmov rsi, rax
    00405780test rsi, rsi
    00405783jne 0x4057a4
    00405785mov cl, 1
    00405787call fn_405a20
    0040578cjmp 0x4057a4
    0040578e
    0040578eloc_40578e:
    0040578emov rcx, [rbx]
    00405791call [rip+0x544d1]
    00405797test eax, eax
    00405799je 0x4057a2
    0040579bmov cl, 2
    0040579dcall fn_405a20
    004057a2
    004057a2loc_4057a2:
    004057a2xor esi, esi
    004057a4
    004057a4loc_4057a4:
    004057a4mov [rbx], rsi
    004057a7jmp 0x4057cd
    004057a9
    004057a9loc_4057a9:
    004057a9test rdx, rdx
    004057acjg 0x4057b2
    004057aexor esi, esi
    004057b0jmp 0x4057cd
    004057b2
    004057b2loc_4057b2:
    004057b2mov rcx, rdx
    004057b5call [rip+0x544a5]
    004057bbmov rsi, rax
    004057betest rsi, rsi
    004057c1jne 0x4057ca
    004057c3mov cl, 1
    004057c5call fn_405a20
    004057ca
    004057caloc_4057ca:
    004057camov [rbx], rsi
    004057cd
    004057cdloc_4057cd:
    004057cdmov rax, rsi
    004057d0add rsp, 40
    004057d4pop rbx
    004057d5pop rsi
    004057d6ret
    00405760
    004057d7
    004057d7 // align 0x10
    004057e0
    004057e0fn_4057e0:
    004057e0push rbp
    004057e1push rdi
    004057e2push rsi
    004057e3push rbx
    004057e4sub rsp, 40
    004057e8mov rbp, rsp
    004057ebxor esi, esi
    004057edxor ebx, ebx
    004057ef
    004057efloc_4057ef:
    004057efcall fn_414a40
    004057f4movsxd rdi, ebx
    004057f7lea rcx, [0x0]
    004057fflea rax, [rax+rcx+24]
    00405804mov rcx, rdi
    00405807add rcx, rcx
    0040580aadd rcx, rcx
    0040580dcmp [rax+8*rcx], 0
    00405811jne 0x405830
    00405813call fn_414a40
    00405818lea rcx, [0x0]
    00405820lea rax, [rax+rcx]
    00405824add rdi, rdi
    00405827add rdi, rdi
    0040582alea rsi, [rax+8*rdi]
    0040582ejmp 0x405838
    00405830
    00405830loc_405830:
    00405830add ebx, 1
    00405833cmp ebx, 16
    00405836jne 0x4057ef
    00405838
    00405838loc_405838:
    00405838nop
    00405839test rsi, rsi
    0040583cjne 0x40584c
    0040583emov ecx, 231
    00405843mov rdx, [rbp+72]
    00405847call fn_4059a0
    0040584c
    0040584cloc_40584c:
    0040584cmov [rsi+24], 1
    00405850call fn_414a40
    00405855lea rcx, [0x200]
    0040585dlea rax, [rax+rcx]
    00405861add [rax], 1
    00405864mov [rsi], 0
    0040586bmov [rsi+16], 0
    00405873mov [rsi+8], 0
    0040587bmov rax, rsi
    0040587elea rsp, [rbp+40]
    00405882pop rbx
    00405883pop rsi
    00405884pop rdi
    00405885pop rbp
    00405886ret
    004057e0
    00405887
    00405887 // align 0x10
    00405890
    00405890fn_405890:
    00405890push rsi
    00405891push rbx
    00405892sub rsp, 40
    00405896mov rbx, rcx
    00405899mov rsi, rbx
    0040589ccall fn_414a40
    004058a1lea rcx, [0x0]
    004058a9lea rax, [rax+rcx]
    004058adcmp rsi, rax
    004058b0jb 0x4058e4
    004058b2call fn_414a40
    004058b7lea rcx, [0x0]
    004058bflea rax, [rax+rcx+480]
    004058c7cmp rsi, rax
    004058caja 0x4058e4
    004058ccmov [rbx+24], 0
    004058d0call fn_414a40
    004058d5lea rcx, [0x200]
    004058ddlea rax, [rax+rcx]
    004058e1sub [rax], 1
    004058e4
    004058e4loc_4058e4:
    004058e4add rsp, 40
    004058e8pop rbx
    004058e9pop rsi
    004058earet
    00405890
    004058eb
    004058eb // align 0x10
    004058f0
    004058f0fn_4058f0:
    004058f0sub rsp, 40
    004058f4call fn_414a40
    004058f9mov rax, [rax+520]
    00405900test rax, rax
    00405903je 0x40590b
    00405905mov rax, [rax+16]
    00405909jmp 0x40590d
    0040590b
    0040590bloc_40590b:
    0040590bxor eax, eax
    0040590d
    0040590dloc_40590d:
    0040590dadd rsp, 40
    00405911ret
    004058f0
    00405912
    00405912 // align 0x10
    00405920
    00405920fn_405920:
    00405920sub rsp, 40
    00405924call fn_414a40
    00405929mov rax, [rax+520]
    00405930test rax, rax
    00405933je 0x40593b
    00405935mov rax, [rax+8]
    00405939jmp 0x40593d
    0040593b
    0040593bloc_40593b:
    0040593bxor eax, eax
    0040593d
    0040593dloc_40593d:
    0040593dadd rsp, 40
    00405941ret
    00405920
    00405942
    00405942 // align 0x10
    00405950
    00405950fn_405950:
    00405950push rbx
    00405951sub rsp, 32
    00405955call fn_414a40
    0040595amov rax, [rax+520]
    00405961test rax, rax
    00405964je 0x405987
    00405966mov rbx, [rax+16]
    0040596amov [rax+16], 0
    00405972cmp [rip+0x5f6ce], 0
    0040597aje 0x405989
    0040597cmov rcx, rbx
    0040597fcall [rip+0x5f6c3]
    00405985jmp 0x405989
    00405987
    00405987loc_405987:
    00405987xor ebx, ebx
    00405989
    00405989loc_405989:
    00405989mov rax, rbx
    0040598cadd rsp, 32
    00405990pop rbx
    00405991ret
    00405950
    00405992
    00405992 // align 0x10
    004059a0
    004059a0fn_4059a0:
    004059a0sub rsp, 40
    004059a4mov [rip+0x5365d], rdx
    004059abcall fn_40ba10
    004059b0add rsp, 40
    004059b4ret
    004059a0
    004059b5
    004059b5 // align 0x10
    004059c0
    004059c0fn_4059c0:
    004059c0push rsi
    004059c1push rbx
    004059c2sub rsp, 40
    004059c6mov ebx, ecx
    004059c8mov rsi, rdx
    004059cband bl, 127
    004059cecmp [rip+0x5f642], 0
    004059d6je 0x4059e3
    004059d8mov ecx, ebx
    004059damov rdx, rsi
    004059ddcall [rip+0x5f635]
    004059e3
    004059e3loc_4059e3:
    004059e3test bl, bl
    004059e5jne 0x4059f6
    004059e7call fn_414a40
    004059ecmovzx rbx, [rax+528]
    004059f4jmp 0x405a0b
    004059f6
    004059f6loc_4059f6:
    004059f6cmp bl, 28
    004059f9ja 0x405a0b
    004059fblea rax, [rip+0x5443a]
    00405a02movzx rbx, bl
    00405a06movzx rbx, [rax+rbx]
    00405a0b
    00405a0bloc_405a0b:
    00405a0bmovzx rcx, bl
    00405a0fmov rdx, rsi
    00405a12call fn_4059a0
    00405a17add rsp, 40
    00405a1bpop rbx
    00405a1cpop rsi
    00405a1dret
    004059c0
    00405a1e
    00405a1e // align 0x10
    00405a20
    00405a20fn_405a20:
    00405a20push rbp
    00405a21sub rsp, 32
    00405a25mov rbp, rsp
    00405a28mov rdx, [rbp+40]
    00405a2ccall fn_4059c0
    00405a31lea rsp, [rbp+32]
    00405a35pop rbp
    00405a36ret
    00405a20
    00405a37
    00405a37 // align 0x10
    00405a40
    00405a40fn_405a40:
    00405a40push rbp
    00405a41sub rsp, 32
    00405a45mov rbp, rsp
    00405a48call fn_414a40
    00405a4dcmp [rax+528], 0
    00405a54je 0x405a61
    00405a56xor ecx, ecx
    00405a58mov rdx, [rbp+40]
    00405a5ccall fn_4059c0
    00405a61
    00405a61loc_405a61:
    00405a61lea rsp, [rbp+32]
    00405a65pop rbp
    00405a66ret
    00405a40
    00405a67
    00405a67 // align 0x10
    00405a70
    00405a70fn_405a70:
    00405a70push rbx
    00405a71sub rsp, 32
    00405a75mov ebx, ecx
    00405a77call fn_414a40
    00405a7cmov [rax+528], ebx
    00405a82add rsp, 32
    00405a86pop rbx
    00405a87ret
    00405a70
    00405a88
    00405a88 // align 0x10
    00405a90
    00405a90fn_405a90:
    00405a90push rbx
    00405a91sub rsp, 32
    00405a95call fn_414a40
    00405a9amov ebx, [rax+528]
    00405aa0call fn_414a40
    00405aa5mov [rax+528], 0
    00405aafmov eax, ebx
    00405ab1add rsp, 32
    00405ab5pop rbx
    00405ab6ret
    00405a90
    00405ab7
    00405ab7 // align 0x10
    00405ac0
    00405ac0fn_405ac0:
    00405ac0cmp rcx, rdx
    00405ac3je 0x405c7d
    00405ac9cmp r8, 8
    00405acdjg 0x405c1d
    00405ad3cmp r8l, 5
    00405ad7jg 0x405b0d
    00405ad9cmp r8l, 5
    00405addje 0x405b86
    00405ae3sub r8l, 1
    00405ae7test r8l, r8l
    00405aeaje 0x405b39
    00405aecsub r8l, 1
    00405af0test r8l, r8l
    00405af3je 0x405b44
    00405af5sub r8l, 1
    00405af9test r8l, r8l
    00405afcje 0x405b50
    00405afesub r8l, 1
    00405b02test r8l, r8l
    00405b05jne 0x405c7d
    00405b0bjmp 0x405b7d
    00405b0d
    00405b0dloc_405b0d:
    00405b0dsub r8l, 6
    00405b11test r8l, r8l
    00405b14je 0x405bad
    00405b1asub r8l, 1
    00405b1etest r8l, r8l
    00405b21je 0x405bd6
    00405b27sub r8l, 1
    00405b2btest r8l, r8l
    00405b2ejne 0x405c7d
    00405b34jmp 0x405c15
    00405b39
    00405b39loc_405b39:
    00405b39movzx rax, [rcx]
    00405b3dmov [rdx], al
    00405b3fjmp 0x405c7d
    00405b44
    00405b44loc_405b44:
    00405b44movzx rax, [rcx]
    00405b48mov [rdx], ax
    00405b4bjmp 0x405c7d
    00405b50
    00405b50loc_405b50:
    00405b50cmp rdx, rcx
    00405b53jbe 0x405b69
    00405b55movzx rax, [rcx+2]
    00405b5amov [rdx+2], al
    00405b5dmovzx rax, [rcx]
    00405b61mov [rdx], ax
    00405b64jmp 0x405c7d
    00405b69
    00405b69loc_405b69:
    00405b69movzx rax, [rcx]
    00405b6dmov [rdx], ax
    00405b70movzx rax, [rcx+2]
    00405b75mov [rdx+2], al
    00405b78jmp 0x405c7d
    00405b7d
    00405b7dloc_405b7d:
    00405b7dmov eax, [rcx]
    00405b7fmov [rdx], eax
    00405b81jmp 0x405c7d
    00405b86
    00405b86loc_405b86:
    00405b86cmp rdx, rcx
    00405b89jbe 0x405b9c
    00405b8bmovzx rax, [rcx+4]
    00405b90mov [rdx+4], al
    00405b93mov eax, [rcx]
    00405b95mov [rdx], eax
    00405b97jmp 0x405c7d
    00405b9c
    00405b9cloc_405b9c:
    00405b9cmov eax, [rcx]
    00405b9emov [rdx], eax
    00405ba0movzx rax, [rcx+4]
    00405ba5mov [rdx+4], al
    00405ba8jmp 0x405c7d
    00405bad
    00405badloc_405bad:
    00405badcmp rdx, rcx
    00405bb0jbe 0x405bc4
    00405bb2movzx rax, [rcx+4]
    00405bb7mov [rdx+4], ax
    00405bbbmov eax, [rcx]
    00405bbdmov [rdx], eax
    00405bbfjmp 0x405c7d
    00405bc4
    00405bc4loc_405bc4:
    00405bc4mov eax, [rcx]
    00405bc6mov [rdx], eax
    00405bc8movzx rax, [rcx+4]
    00405bcdmov [rdx+4], ax
    00405bd1jmp 0x405c7d
    00405bd6
    00405bd6loc_405bd6:
    00405bd6cmp rdx, rcx
    00405bd9jbe 0x405bf5
    00405bdbmovzx rax, [rcx+6]
    00405be0mov [rdx+6], al
    00405be3movzx rax, [rcx+4]
    00405be8mov [rdx+4], ax
    00405becmov eax, [rcx]
    00405beemov [rdx], eax
    00405bf0jmp 0x405c7d
    00405bf5
    00405bf5loc_405bf5:
    00405bf5mov rax, rcx
    00405bf8mov r8, rdx
    00405bfbmov r9l, [rax]
    00405bfemov [r8], r9l
    00405c01movzx rax, [rax+4]
    00405c06mov [r8+4], ax
    00405c0bmovzx rax, [rcx+6]
    00405c10mov [rdx+6], al
    00405c13jmp 0x405c7d
    00405c15
    00405c15loc_405c15:
    00405c15mov rax, [rcx]
    00405c18mov [rdx], rax
    00405c1bjmp 0x405c7d
    00405c1d
    00405c1dloc_405c1d:
    00405c1dcmp rdx, rcx
    00405c20jbe 0x405c53
    00405c22mov r9, [rcx]
    00405c25mov rax, rdx
    00405c28lea r10, [r8-8]
    00405c2clea rdx, [rdx+r10]
    00405c30add rcx, r10
    00405c33
    00405c33loc_405c33:
    00405c33mov r10, [rcx]
    00405c36mov [rdx], r10
    00405c39cmp r8, 16
    00405c3djle 0x405c4d
    00405c3fsub r8, 8
    00405c43sub rcx, 8
    00405c47sub rdx, 8
    00405c4bjmp 0x405c33
    00405c4d
    00405c4dloc_405c4d:
    00405c4dnop
    00405c4emov [rax], r9
    00405c51jmp 0x405c7d
    00405c53
    00405c53loc_405c53:
    00405c53lea r10, [r8-8]
    00405c57mov r9, [rcx+r10]
    00405c5blea rax, [rdx+r10]
    00405c5f
    00405c5floc_405c5f:
    00405c5fmov r10, [rcx]
    00405c62mov [rdx], r10
    00405c65cmp r8, 16
    00405c69jle 0x405c79
    00405c6bsub r8, 8
    00405c6fadd rcx, 8
    00405c73add rdx, 8
    00405c77jmp 0x405c5f
    00405c79
    00405c79loc_405c79:
    00405c79nop
    00405c7amov [rax], r9
    00405c7d
    00405c7dloc_405c7d:
    00405c7dret
    00405ac0
    00405c7e
    00405c7e // align 0x10
    00405c80
    00405c80fn_405c80:
    00405c80push rsi
    00405c81push rbx
    00405c82sub rsp, 40
    00405c86mov rax, rcx
    00405c89mov rbx, rdx
    00405c8cjmp 0x405c92
    00405c8e
    00405c8eloc_405c8e:
    00405c8eadd rax, 2
    00405c92
    00405c92loc_405c92:
    00405c92movzx rcx, [rax]
    00405c96test cx, cx
    00405c99je 0x405ca1
    00405c9bcmp cx, 32
    00405c9fjbe 0x405c8e
    00405ca1
    00405ca1loc_405ca1:
    00405ca1cmp [rax], 34
    00405ca5jne 0x405cb4
    00405ca7cmp [rax+2], 34
    00405cacjne 0x405cb4
    00405caeadd rax, 4
    00405cb2jmp 0x405c92
    00405cb4
    00405cb4loc_405cb4:
    00405cb4nop
    00405cb5xor ecx, ecx
    00405cb7mov rsi, rax
    00405cbajmp 0x405cf1
    00405cbc
    00405cbcloc_405cbc:
    00405cbccmp dx, 34
    00405cc0jne 0x405cea
    00405cc2add rax, 2
    00405cc6jmp 0x405ccf
    00405cc8
    00405cc8loc_405cc8:
    00405cc8add ecx, 1
    00405ccbadd rax, 2
    00405ccf
    00405ccfloc_405ccf:
    00405ccfmovzx rdx, [rax]
    00405cd3test dx, dx
    00405cd6je 0x405cde
    00405cd8cmp dx, 34
    00405cdcjne 0x405cc8
    00405cde
    00405cdeloc_405cde:
    00405cdecmp [rax], 0
    00405ce2je 0x405cf1
    00405ce4add rax, 2
    00405ce8jmp 0x405cf1
    00405cea
    00405cealoc_405cea:
    00405ceaadd ecx, 1
    00405cedadd rax, 2
    00405cf1
    00405cf1loc_405cf1:
    00405cf1movzx rdx, [rax]
    00405cf5cmp dx, 32
    00405cf9ja 0x405cbc
    00405cfbmov rax, rbx
    00405cfemov edx, ecx
    00405d00mov rcx, rax
    00405d03call fn_40d8d0
    00405d08mov rax, rsi
    00405d0bmov rdx, [rbx]
    00405d0exor ecx, ecx
    00405d10jmp 0x405d5a
    00405d12
    00405d12loc_405d12:
    00405d12cmp r8w, 34
    00405d17jne 0x405d4b
    00405d19add rax, 2
    00405d1djmp 0x405d2e
    00405d1f
    00405d1floc_405d1f:
    00405d1fmovsxd r9, ecx
    00405d22mov [rdx+2*r9], r8w
    00405d27add rax, 2
    00405d2badd ecx, 1
    00405d2e
    00405d2eloc_405d2e:
    00405d2emovzx r8, [rax]
    00405d32test r8w, r8w
    00405d36je 0x405d3f
    00405d38cmp r8w, 34
    00405d3djne 0x405d1f
    00405d3f
    00405d3floc_405d3f:
    00405d3fcmp [rax], 0
    00405d43je 0x405d5a
    00405d45add rax, 2
    00405d49jmp 0x405d5a
    00405d4b
    00405d4bloc_405d4b:
    00405d4bmovsxd r9, ecx
    00405d4emov [rdx+2*r9], r8w
    00405d53add rax, 2
    00405d57add ecx, 1
    00405d5a
    00405d5aloc_405d5a:
    00405d5amovzx r8, [rax]
    00405d5ecmp r8w, 32
    00405d63ja 0x405d12
    00405d65add rsp, 40
    00405d69pop rbx
    00405d6apop rsi
    00405d6bret
    00405c80