Function at 0x408570
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x14c
cmp dword [esp + 0x164], 0x1ffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ecx
ja 0x4088f0
mov esi, dword [eax + 0x72c8]
mov eax, dword [eax + 0x72cc]
cmp dword [esp + 0x164], 2
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], eax
jbe 0x409068
mov eax, dword [esp + 0x160]
movzx eax, byte [eax]
mov ecx, eax
and ecx, 3
cmp cl, 2
je 0x4086e7
cmp cl, 3
je 0x4086d0
cmp cl, 1
je 0x408908
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409e00
cmp dl, 3
jne 0x4090a0
mov eax, dword [esp + 0x160]
movzx ebx, byte [eax + 2]
movzx eax, word [eax]
shl ebx, 0x10
add ebx, eax
mov eax, 3
shr ebx, 4
lea esi, [ebx + eax]
mov dword [esp + 0x50], esi
lea edx, [esi + 0x20]
cmp dword [esp + 0x164], edx
jae 0x409400
cmp dword [esp + 0x164], esi
jb 0x409068
mov edi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
lea esi, [edi + 0x73e8]
mov dword [esp], esi
call sub.msvcrt.dll_memcpy
lea eax, [esi + ebx]
mov dword [edi + 0x7368], esi
mov edx, 4
lea ecx, [eax + 4]
mov dword [edi + 0x7378], ebx
xor esi, esi
and ecx, 0xfffffffc
mov dword [eax], 0
mov dword [eax + 0x1c], 0
sub eax, ecx
add eax, 0x20
mov dword [ecx], 0
and eax, 0xfffffffc
lea ebx, [eax - 1]
shr ebx, 2
and ebx, 1
cmp edx, eax
jae 0x40899b
test ebx, ebx
je 0x4086bd
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x40899b
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4086bd
jmp 0x40899b
mov esi, dword [esp + 0x34]
mov edi, 0xffffffe2
mov ebx, dword [esi + 0x72f8]
test ebx, ebx
je 0x4088f5
cmp dword [esp + 0x164], 4
jbe 0x409068
mov esi, dword [esp + 0x160]
shr al, 2
and eax, 3
mov ebx, dword [esi]
mov edx, ebx
shr edx, 4
cmp al, 2
je 0x409080
cmp al, 3
je 0x409050
xor eax, 1
mov edi, edx
shr ebx, 0xe
movzx eax, al
and edi, 0x3ff
and ebx, 0x3ff
mov dword [esp + 0x44], eax
mov eax, 3
lea esi, [eax + ebx]
mov dword [esp + 0x50], esi
cmp dword [esp + 0x164], esi
jb 0x409068
mov esi, dword [esp + 0x34]
mov edx, dword [esi + 0x7394]
test edx, edx
je 0x408767
cmp edi, 0x300
ja 0x4090c8
add eax, dword [esp + 0x160]
mov dword [esp + 0x40], eax
cmp cl, 3
je 0x409e28
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x4090e4
test edi, edi
je 0x409068
test ebx, ebx
je 0x409068
cmp ebx, edi
jae 0x40a400
mov eax, ebx
xor edx, edx
shl eax, 4
div edi
lea edx, [eax + eax*2]
shl edx, 3
mov esi, dword [edx + 0x417860]
mov ecx, dword [edx + 0x417864]
mov ebp, dword [edx + 0x417868]
mov eax, dword [edx + 0x41786c]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x34]
lea edx, [esi + 0x6aac]
mov dword [esp + 0x54], edx
lea edx, [esi + 0x73e8]
add esi, 0x2828
mov dword [esp + 0x44], edx
mov edx, edi
shr edx, 8
imul eax, edx
imul edx, ecx
mov ecx, dword [esp + 0x58]
add eax, ebp
mov ebp, eax
add edx, ecx
shr ebp, 3
add eax, ebp
cmp eax, edx
jae 0x40a3a9
mov ecx, dword [esp + 0x54]
mov ebp, dword [esp + 0x40]
mov dword [esp + 4], 0x800
mov eax, esi
mov dword [esp], ecx
mov edx, ebp
mov ecx, ebx
call fcn.00406f00
cmp eax, 0xffffff88
ja 0x409068
cmp eax, ebx
jae 0x409068
sub ebx, eax
mov ecx, ebp
mov dword [esp + 4], esi
mov edx, edi
mov dword [esp], ebx
add ecx, eax
mov eax, dword [esp + 0x44]
call fcn.00402f20
cmp eax, 0xffffff88
ja 0x409068
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x44]
mov dword [eax + 0x7378], edi
mov dword [eax + 0x7368], ebx
mov dword [eax + 0x72f8], 1
mov dword [eax + 0xc], esi
lea eax, [ebx + edi]
mov dword [esp + 0x58], eax
lea ecx, [eax + 4]
mov dword [eax], 0
mov edx, 4
xor esi, esi
and ecx, 0xfffffffc
mov dword [eax + 0x1c], 0
sub eax, ecx
mov dword [ecx], 0
add eax, 0x20
and eax, 0xfffffffc
lea ebx, [eax - 1]
shr ebx, 2
and ebx, 1
cmp edx, eax
jae 0x40899b
test ebx, ebx
je 0x4088d3
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x40899b
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4088d3
jmp 0x40899b
mov edi, 0xffffffb8
add esp, 0x14c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409dd0
cmp dl, 3
jne 0x4090b0
mov eax, dword [esp + 0x160]
mov ebx, dword [esp + 0x160]
movzx eax, byte [eax + 2]
movzx edx, word [ebx]
shl eax, 0x10
add eax, edx
mov ebx, eax
shr ebx, 4
cmp eax, 0x20000f
ja 0x409068
cmp dword [esp + 0x164], 3
je 0x409068
mov dword [esp + 0x50], 4
mov edx, 3
lea eax, [ebx + 0x20]
mov edi, dword [esp + 0x34]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x160]
lea esi, [edi + 0x73e8]
movzx eax, byte [eax + edx]
mov dword [esp], esi
mov dword [esp + 4], eax
call sub.msvcrt.dll_memset
mov dword [edi + 0x7368], esi
mov dword [edi + 0x7378], ebx
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x160]
mov edi, dword [esp + 0x164]
add ebx, eax
sub edi, eax
mov dword [esp + 0x54], edi
mov eax, edi
je 0x4088f0
lea edi, [ebx + 1]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x40], edi
movzx edi, byte [ebx]
mov esi, dword [esi + 0x7394]
mov dword [esp + 0x44], edi
test edi, edi
jne 0x409160
cmp eax, 1
jne 0x4088f0
mov eax, dword [esp + 0x38]
xor edx, edx
test eax, eax
je 0x409fa9
mov edi, dword [esp + 0x48]
mov eax, 0x2000000
cmp eax, edi
mov eax, 0
sbb eax, dword [esp + 0x4c]
setb byte [esp + 0xa2]
test esi, esi
jne 0x409380
mov ebx, dword [esp + 0x34]
mov eax, 0x1000000
cmp eax, dword [ebx + 0x72c8]
sbb esi, dword [ebx + 0x72cc]
jb 0x409420
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
add ebx, esi
mov dword [esp + 0x58], ebx
mov esi, dword [eax + 0x7368]
mov dword [eax + 0x7394], 0
mov ebx, dword [eax + 0x7378]
mov dword [esp + 0xbc], esi
lea edi, [esi + ebx]
mov dword [esp + 0x5c], edi
mov edi, dword [eax + 0x72b0]
mov dword [esp + 0x60], edi
mov edi, dword [eax + 0x72b4]
mov eax, dword [eax + 0x72b8]
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x44]
mov dword [esp + 0x7c], eax
test edi, edi
je 0x40acee
mov eax, dword [esp + 0x34]
mov dword [eax + 0x72fc], 1
mov ebx, dword [eax + 0x682c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x128], ebx
mov ebx, eax
mov eax, dword [eax + 0x6830]
mov dword [esp + 0x12c], eax
mov eax, dword [ebx + 0x6834]
mov dword [esp + 0x130], eax
test edx, edx
je 0x409068
mov ebx, dword [esp + 0x40]
lea eax, [ebx + 4]
mov dword [esp + 0x108], ebx
mov dword [esp + 0x10c], eax
mov eax, ebx
lea ebx, [ebx + edx - 1]
cmp edx, 3
jbe 0x40ad3f
lea eax, [eax + edx - 4]
mov dword [esp + 0x104], eax
mov eax, dword [eax]
mov dword [esp + 0xfc], eax
movzx eax, byte [ebx]
test al, al
je 0x409068
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409068
mov ebx, dword [esp + 0x34]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x110]
mov ecx, dword [ebx]
call fcn.004019f0
mov ecx, dword [ebx + 8]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x118]
call fcn.004019f0
mov ecx, dword [ebx + 4]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x120]
call fcn.004019f0
mov eax, dword [esp + 0x58]
mov dword [esp + 0x6c], esi
mov edx, dword [esp + 0x100]
sub eax, 0x20
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], eax
lea esi, [esi]
lea esi, [esi]
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x114]
lea ebp, [eax + ecx*8]
mov ecx, dword [esp + 0x120]
movzx eax, byte [ebp + 2]
mov byte [esp + 0x50], al
mov eax, dword [ebp + 4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x124]
lea edi, [eax + ecx*8]
mov ecx, dword [esp + 0x118]
movzx eax, byte [edi + 2]
mov dword [esp + 0x64], edi
mov byte [esp + 0x54], al
mov eax, dword [edi + 4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x11c]
lea eax, [eax + ecx*8]
movzx ebx, byte [eax + 2]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 4]
cmp bl, 1
jbe 0x40a040
movzx ecx, bl
mov edi, dword [esp + 0xfc]
mov dword [esp + 0x78], ecx
mov esi, ecx
mov ecx, edx
mov dword [esp + 0x80], edi
shl edi, cl
cmp bl, 0x18
jbe 0x40a078
cmp byte [esp + 0xa2], 0
je 0x40a078
mov ebx, 0x20
sub ebx, edx
mov ecx, ebx
mov ebx, esi
cmp ecx, esi
mov esi, ecx
mov ecx, ebx
cmova esi, ebx
sub ecx, esi
add edx, esi
mov dword [esp + 0x88], esi
neg esi
mov ebx, ecx
mov dword [esp + 0x84], ecx
mov ecx, esi
shr edi, cl
mov ecx, ebx
mov dword [esp + 0x100], edx
shl edi, cl
add edi, eax
cmp edx, 0x20
ja 0x408ce5
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b592
mov esi, dword [esp + 0x108]
cmp eax, esi
je 0x408ce5
mov ecx, edx
mov ebx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x80], ecx
mov ecx, ebx
cmp ebx, esi
jae 0x408cbb
sub eax, esi
mov ecx, esi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x104], ecx
shl eax, 3
sub edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x100], edx
mov dword [esp + 0x80], eax
mov dword [esp + 0xfc], eax
mov ebx, dword [esp + 0x84]
test ebx, ebx
jne 0x40b465
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x128], edi
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x12c], eax
xor eax, eax
cmp byte [esp + 0x54], 0
jne 0x40a1ea
movzx ebx, byte [esp + 0x50]
add eax, ebx
cmp eax, 0x13
jg 0x40a18c
cmp byte [esp + 0x50], 0
jne 0x40a24c
cmp edx, 0x20
ja 0x40a212
mov ecx, dword [esp + 0x10c]
mov eax, dword [esp + 0x104]
cmp eax, ecx
jae 0x40a2d7
mov ebx, dword [esp + 0x108]
cmp ebx, eax
je 0x40a212
mov ecx, edx
mov edi, eax
shr ecx, 3
sub edi, ecx
cmp edi, ebx
jae 0x408d81
sub eax, ebx
mov edi, ebx
mov ecx, eax
mov eax, dword [edi]
mov dword [esp + 0x104], edi
shl ecx, 3
sub edx, ecx
mov dword [esp + 0xfc], eax
movzx ebx, byte [ebp + 3]
mov edi, eax
add edx, ebx
mov ecx, edx
neg ecx
shr edi, cl
mov ecx, dword [ebx*4 + 0x417a00]
movzx ebx, word [ebp]
mov ebp, eax
and ecx, edi
mov edi, dword [esp + 0x64]
add ecx, ebx
mov dword [esp + 0x110], ecx
movzx ebx, word [edi]
movzx edi, byte [edi + 3]
add edx, edi
mov ecx, edx
mov dword [esp + 0x100], edx
neg ecx
shr ebp, cl
mov ecx, dword [edi*4 + 0x417a00]
and ecx, ebp
add ebx, ecx
mov dword [esp + 0x120], ebx
cmp edx, 0x20
ja 0x408e34
mov ecx, dword [esp + 0x104]
cmp ecx, dword [esp + 0x10c]
jae 0x40a2b8
mov ebx, dword [esp + 0x108]
cmp ecx, ebx
je 0x408e34
mov eax, edx
mov edi, ecx
shr eax, 3
sub edi, eax
cmp edi, ebx
jae 0x408e1f
mov eax, ecx
mov edi, ebx
sub eax, ebx
shl eax, 3
mov dword [esp + 0x104], edi
sub edx, eax
mov eax, dword [edi]
mov dword [esp + 0xfc], eax
mov edi, dword [esp + 0x68]
movzx ebx, word [edi]
movzx edi, byte [edi + 3]
add edx, edi
mov ecx, edx
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x40]
neg ecx
shr eax, cl
and eax, dword [edi*4 + 0x417a00]
mov edi, dword [esp + 0x4c]
add ebx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x118], ebx
add edi, eax
lea ebx, [edx + eax]
mov dword [esp + 0x54], edi
mov esi, edi
lea ebp, [edx + edi]
mov edi, dword [esp + 0x6c]
mov ecx, ebx
add eax, edi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x50]
cmp dword [esp + 0x5c], ecx
jb 0x40ac29
cmp dword [esp + 0x70], ebp
jb 0x40ac29
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, esi
add edx, 0x20
cmp ecx, edx
jb 0x40ac29
mov edx, dword [edi]
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x48], 0x10
mov dword [ecx], edx
mov edx, dword [edi + 4]
mov dword [ecx + 4], edx
mov edx, dword [edi + 8]
mov dword [ecx + 8], edx
mov edx, dword [edi + 0xc]
mov dword [ecx + 0xc], edx
ja 0x40b289
mov esi, dword [esp + 0x60]
mov edx, ebx
mov edi, dword [esp + 0x50]
sub edx, esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xbc], edi
cmp edx, esi
jae 0x408f47
mov esi, dword [esp + 0x74]
mov edx, ebx
sub edx, esi
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x40b651
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x4c]
sub eax, esi
mov esi, eax
lea eax, [edi + eax]
lea edx, [eax + ecx]
cmp edi, edx
jae 0x40b0ab
mov edi, esi
mov dword [esp], ebx
neg edi
mov dword [esp + 4], eax
mov dword [esp + 8], edi
add ebx, edi
call sub.msvcrt.dll_memmove
add dword [esp + 0x4c], esi
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x3c], 0xf
jbe 0x40b3f3
mov edx, dword [eax]
add ebx, 0x10
add eax, 0x10
mov dword [ebx - 0x10], edx
mov edx, dword [eax - 0xc]
mov dword [ebx - 0xc], edx
mov edx, dword [eax - 8]
mov dword [ebx - 8], edx
mov edx, dword [eax - 4]
mov dword [ebx - 4], edx
cmp dword [esp + 0x4c], 0x10
jle 0x408fb9
lea esi, [esi]
lea esi, [esi]
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov esi, dword [eax - 0x10]
mov dword [ebx - 0x10], esi
mov esi, dword [eax - 0xc]
mov dword [ebx - 0xc], esi
mov esi, dword [eax - 8]
mov dword [ebx - 8], esi
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, ebp
jb 0x408f80
mov dword [esp + 0x40], ebp
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409017
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40a292
mov ebx, dword [esp + 0x108]
cmp eax, ebx
je 0x409017
mov ecx, edx
mov esi, eax
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x408ffb
sub eax, ebx
mov esi, ebx
mov ecx, eax
mov eax, dword [esi]
shl ecx, 3
mov dword [esp + 0x104], esi
sub edx, ecx
mov dword [esp + 0x100], edx
mov dword [esp + 0xfc], eax
cmp dword [esp + 0x54], 0xffffff88
ja 0x40b200
sub dword [esp + 0x44], 1
je 0x40b498
mov eax, dword [esp + 0x128]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x6c], eax
jmp 0x408ba0
mov edi, edx
movzx eax, byte [esi + 4]
and edi, 0x3ffff
cmp edi, 0x20000
jbe 0x409143
add esp, 0x14c
mov edi, 0xffffffec
pop ebx
mov eax, edi
pop esi
pop edi
pop ebp
ret
mov edi, edx
mov dword [esp + 0x44], 0
shr ebx, 0x12
mov eax, 4
and edi, 0x3fff
jmp 0x408739
shr al, 3
movzx ebx, al
mov eax, 1
jmp 0x408618
shr al, 3
mov dword [esp + 0x50], 2
mov edx, 1
movzx ebx, al
jmp 0x408967
mov edx, dword [esi + 0xc]
lea esi, [edx + 0x4040]
add edx, 0x40
lea esi, [esi]
sub edx, 0xffffff80
cmp esi, edx
jne 0x4090d8
jmp 0x408767
mov ebp, dword [esp + 0x34]
mov edx, eax
mov ecx, ebx
lea eax, [ebp + 0x6aac]
lea esi, [ebp + 0x2828]
mov dword [esp], eax
mov eax, esi
call fcn.00406610
cmp eax, 0xffffff88
ja 0x409068
cmp eax, ebx
jae 0x409068
sub ebx, eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 4], esi
add ebp, 0x73e8
mov dword [esp], ebx
mov edx, edi
add ecx, eax
mov eax, ebp
mov dword [esp + 0x44], ebp
call fcn.00405120
cmp eax, 0xffffff88
jbe 0x40885a
jmp 0x409068
shl eax, 0xa
shr ebx, 0x16
mov dword [esp + 0x44], 0
add ebx, eax
mov eax, 5
jmp 0x408739
mov eax, dword [esp + 0x160]
add eax, dword [esp + 0x164]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
cmp eax, 0x7f
jle 0x4091ab
cmp eax, 0xff
je 0x40a26f
mov edi, dword [esp + 0x58]
cmp dword [esp + 0x40], edi
jae 0x4088f0
movzx edx, byte [ebx + 1]
add eax, 0xffffff80
lea edi, [ebx + 2]
shl eax, 8
mov dword [esp + 0x40], edi
add eax, edx
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x40]
lea edi, [ecx + 1]
cmp dword [esp + 0x58], edi
jb 0x4088f0
mov ebp, dword [esp + 0x34]
movzx eax, byte [ecx]
mov dword [esp + 0x20], esi
lea edx, [ebp + 0x6aac]
mov ecx, eax
mov byte [esp + 0x40], al
lea eax, [ebp + 0x10]
mov dword [esp + 0x28], edx
shr cl, 6
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x44]
movzx ecx, cl
mov dword [esp + 0x24], edx
mov edx, dword [ebp + 0x72fc]
mov dword [esp + 0x18], 0x417640
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417ae0
sub edx, edi
mov dword [esp + 0x10], 0x417b80
mov dword [esp + 0xc], edx
mov edx, ebp
mov dword [esp + 8], edi
mov dword [esp + 4], 9
mov dword [esp], 0x23
call fcn.004082a0
cmp eax, 0xffffff88
ja 0x409068
add edi, eax
mov dword [esp + 0x34], ebp
lea edx, [ebp + 8]
lea eax, [ebp + 0x1018]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x5c]
movzx ecx, byte [esp + 0x40]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x44]
shr cl, 4
mov dword [esp + 0x24], edi
mov edi, dword [ebp + 0x7394]
and ecx, 3
mov dword [esp + 0x20], edi
mov edi, dword [ebp + 0x72fc]
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x18], 0x417520
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417de0
sub edi, ebp
mov dword [esp + 0x10], 0x417e60
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], 8
mov dword [esp], 0x1f
call fcn.004082a0
cmp eax, 0xffffff88
ja 0x409068
add ebp, eax
mov edi, dword [esp + 0x34]
movzx ecx, byte [esp + 0x40]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x5c]
lea edx, [edi + 4]
lea eax, [edi + 0x1820]
shr cl, 2
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x44]
and ecx, 3
mov dword [esp + 0x24], ebp
mov ebp, dword [edi + 0x7394]
mov dword [esp + 0x20], ebp
mov ebp, dword [edi + 0x72fc]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x18], 0x417300
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x14], 0x417c20
sub edi, ebp
mov dword [esp + 0x10], 0x417d00
mov dword [esp + 0xc], edi
mov edi, ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], 9
mov dword [esp], 0x34
call fcn.004082a0
cmp eax, 0xffffff88
ja 0x409068
add edi, eax
mov dword [esp + 0x40], edi
sub edi, ebx
cmp edi, 0xffffff88
ja 0x4088f5
mov eax, dword [esp + 0x38]
test eax, eax
je 0x409f98
mov edx, dword [esp + 0x54]
mov dword [esp + 0x54], edi
sub edx, edi
jmp 0x4089f4
mov esi, dword [esp + 0x34]
mov edi, dword [esi + 0x72b0]
mov eax, dword [esi + 0x7368]
mov dword [esi + 0x7394], 0
mov ebx, dword [esi + 0x7378]
mov dword [esp + 0x68], edi
mov edi, dword [esi + 0x72b4]
mov esi, dword [esi + 0x72b8]
mov dword [esp + 0xb8], eax
mov dword [esp + 0x9c], edi
mov dword [esp + 0x8c], esi
mov esi, dword [esp + 0x44]
test esi, esi
jne 0x40a018
cmp dword [esp + 0x3c], ebx
jb 0x40b0c0
mov edi, dword [esp + 0x38]
mov dword [esp], edi
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov eax, edi
add eax, ebx
mov edi, eax
mov eax, dword [esp + 0x38]
sub edi, eax
jmp 0x4088f5
mov esi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esi + 0x7368], eax
mov dword [esi + 0x7378], ebx
jmp 0x40899b
cmp dword [esp + 0x44], 4
jle 0x408a33
mov ebx, dword [ebx + 8]
mov eax, 1
mov esi, dword [ebx + 4]
mov ecx, esi
shl eax, cl
test eax, eax
je 0x40b5d2
mov eax, 8
add ebx, 0xa
shl eax, cl
lea ecx, [ebx + eax]
xor eax, eax
lea esi, [esi]
cmp byte [ebx], 0x17
sbb eax, 0xffffffff
add ebx, 8
cmp ecx, ebx
jne 0x409458
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
add ebx, ecx
mov dword [esp + 0x3c], ebx
mov ecx, dword [edi + 0x72b0]
mov dword [esp + 0x80], ebx
mov ebx, dword [edi + 0x72b8]
mov dword [edi + 0x7394], 0
mov dword [esp + 0x8c], ebx
mov ebp, ebx
mov ebx, dword [edi + 0x72b4]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x4c], ebx
mov ebx, dword [edi + 0x7368]
mov edi, dword [edi + 0x7378]
mov dword [esp + 0x48], ecx
lea ecx, [ebx + edi]
mov dword [esp + 0x84], ecx
mov ecx, 8
sub ecx, esi
shl eax, cl
cmp eax, 0x13
jbe 0x40b846
mov dword [esp + 0xb8], ebx
mov esi, dword [esp + 0x34]
mov eax, dword [esi + 0x6830]
mov ebx, dword [esi + 0x682c]
mov dword [esi + 0x72fc], 1
mov ecx, dword [esi + 0x6834]
mov dword [esp + 0x128], ebx
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x130], ecx
sub eax, ebx
mov dword [esp + 0x134], ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x13c], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x138], eax
test edx, edx
je 0x409068
mov eax, dword [esp + 0x40]
lea ebx, [eax + 4]
mov dword [esp + 0x108], eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x10c], ebx
mov ebx, eax
lea eax, [eax + edx - 1]
cmp edx, 3
jbe 0x40a100
lea ecx, [ebx + edx - 4]
mov dword [esp + 0x104], ecx
mov ecx, dword [ecx]
mov dword [esp + 0xfc], ecx
movzx eax, byte [eax]
test al, al
je 0x409068
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409068
mov ebx, dword [esp + 0x34]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x110]
mov ecx, dword [ebx]
call fcn.004019f0
mov ecx, dword [ebx + 8]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x118]
call fcn.004019f0
mov ecx, dword [ebx + 4]
lea edx, [esp + 0xfc]
lea eax, [esp + 0x120]
call fcn.004019f0
mov ebp, dword [esp + 0x100]
mov ebx, ebp
cmp ebp, 0x20
ja 0x409068
mov esi, dword [esp + 0x44]
mov eax, 4
mov byte [esp + 0x5c], 0
mov dword [esp + 0x3c], 0
mov edi, dword [esp + 0xfc]
cmp esi, eax
mov dword [esp + 0xac], ebp
cmovle eax, esi
mov esi, dword [esp + 0x104]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x114]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x98], eax
lea eax, [esp + 0xbc]
mov dword [esp + 0x6c], eax
xor eax, eax
jmp 0x409874
cmp al, 0x18
mov edx, edi
seta cl
mov esi, ecx
mov ecx, ebx
shl edx, cl
mov ecx, esi
and cl, byte [esp + 0xa2]
mov byte [esp + 0xa3], cl
jne 0x409d10
add ebx, eax
neg eax
mov ecx, eax
mov eax, dword [esp + 0x7c]
shr edx, cl
add edx, eax
cmp ebx, 0x20
ja 0x4096ee
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40a175
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x4096ee
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a345
mov eax, ebp
sub eax, esi
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
shl eax, 3
sub ebx, eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x128], edx
mov dword [esp + 0x54], edx
mov dword [esp + 0x12c], eax
xor eax, eax
cmp byte [esp + 0x64], 0
jne 0x4099f8
movzx edx, byte [esp + 0x58]
add eax, edx
cmp eax, 0x13
jg 0x4099b0
movzx eax, byte [esp + 0x58]
test al, al
jne 0x409990
cmp ebx, 0x20
ja 0x409d00
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409a38
mov ecx, dword [esp + 0x40]
mov esi, ecx
cmp ebp, ecx
je 0x40977a
mov eax, ebx
mov esi, ebp
shr eax, 3
sub esi, eax
cmp esi, ecx
jae 0x40976e
mov eax, ebp
mov esi, ecx
sub eax, ecx
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
shl eax, 3
sub ebx, eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x48]
mov edx, edi
mov ebp, dword [esp + 0x70]
add eax, ecx
mov ecx, dword [esp + 0x50]
add eax, ecx
mov dword [esp + 0x60], eax
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov eax, edx
movzx edx, word [ebp]
mov ebp, dword [esp + 0x74]
add eax, edx
mov edx, edi
mov dword [esp + 0x110], eax
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x120], eax
cmp ebx, 0x20
ja 0x40981a
mov eax, dword [esp + 0x4c]
cmp esi, eax
jae 0x409a50
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x40981a
mov eax, ebx
mov edx, esi
shr eax, 3
sub edx, eax
cmp edx, ecx
jae 0x409db8
mov eax, esi
sub eax, ecx
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
shl eax, 3
sub ebx, eax
mov ebp, dword [esp + 0x78]
mov edx, edi
add dword [esp + 0x3c], 1
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov ecx, dword [esp + 0x48]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x6c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x50]
add eax, 0x10
mov dword [eax - 0xc], ecx
mov ecx, dword [esp + 0x54]
mov dword [eax - 8], ecx
mov dword [esp + 0x6c], eax
mov eax, 1
cmp ebx, 0x20
ja 0x409a70
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x409a18
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x409dc0
mov edx, ebx
mov ebp, esi
shr edx, 3
sub ebp, edx
cmp ebp, ecx
jae 0x40989f
sub esi, ecx
mov ebp, ecx
mov edx, esi
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
shl edx, 3
sub ebx, edx
mov edx, 1
mov ecx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ecx
je 0x40a41c
mov eax, dword [esp + 0x110]
mov esi, dword [esp + 0x90]
lea eax, [esi + eax*8]
movzx ecx, byte [eax + 2]
mov dword [esp + 0x70], eax
mov eax, dword [eax + 4]
mov byte [esp + 0x58], cl
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x120]
lea ecx, [ecx + eax*8]
movzx eax, byte [ecx + 2]
mov dword [esp + 0x74], ecx
mov byte [esp + 0x64], al
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x118]
lea ecx, [ecx + eax*8]
mov dword [esp + 0x78], ecx
movzx eax, byte [ecx + 2]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x54], ecx
cmp al, 1
ja 0x409680
je 0x40aeb8
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x409712
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x128], eax
mov dword [esp + 0x54], eax
jmp 0x409712
mov eax, ebx
mov byte [esp + 0x5c], 1
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
movzx eax, byte [esp + 0x58]
test al, al
je 0x409745
lea esi, [esi]
mov ecx, ebx
mov eax, edi
add ebx, edx
shl eax, cl
mov ecx, edx
neg ecx
shr eax, cl
add dword [esp + 0x48], eax
jmp 0x40973c
cmp ebx, 0x20
ja 0x409cf8
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40996d
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40997f
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a34c
mov eax, ebp
sub eax, esi
sub ebp, eax
shl eax, 3
mov byte [esp + 0x5c], 1
mov edi, dword [ebp]
sub ebx, eax
jmp 0x40972f
movzx eax, byte [esp + 0x64]
mov ecx, ebx
mov edx, edi
shl edx, cl
mov ecx, eax
add ebx, eax
neg ecx
shr edx, cl
add dword [esp + 0x50], edx
jmp 0x40971f
mov edx, ebx
and ebx, 7
shr edx, 3
sub esi, edx
mov edx, 1
mov edi, dword [esi]
mov ebp, esi
mov byte [esp + 0x5c], 1
jmp 0x4098b1
mov eax, ebx
mov esi, ebp
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40977a
mov eax, ebx
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40981a
mov eax, dword [esp + 0x60]
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x100], ebx
mov dword [esp + 0x13c], eax
je 0x409a97
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ebx
jg 0x409068
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ebx
jl 0x409068
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x88]
sub eax, ebx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x3c], eax
cmp eax, ebx
jge 0x409c9f
mov eax, dword [esp + 0x80]
mov ebp, edi
sub eax, 0x20
mov dword [esp + 0x58], eax
lea esi, [esi]
nop
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0xb8]
and eax, 3
shl eax, 4
mov ecx, dword [esp + eax + 0xbc]
mov esi, dword [esp + eax + 0xc0]
mov edi, dword [esp + eax + 0xc4]
mov dword [esp + 0x48], esi
lea ebx, [ebp + ecx]
add esi, ecx
lea eax, [ebp + esi]
mov dword [esp + 0x40], esi
mov esi, ebx
mov dword [esp + 0x4c], eax
sub esi, edi
lea eax, [edx + ecx]
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], esi
cmp dword [esp + 0x84], eax
jb 0x40a353
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x58], eax
jb 0x40a353
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x40]
sub eax, ebp
add esi, 0x20
cmp eax, esi
jb 0x40a353
mov eax, dword [edx]
mov dword [ebp], eax
mov eax, dword [edx + 4]
mov dword [ebp + 4], eax
mov eax, dword [edx + 8]
mov dword [ebp + 8], eax
mov eax, dword [edx + 0xc]
mov dword [ebp + 0xc], eax
cmp ecx, 0x10
ja 0x40b209
mov eax, dword [esp + 0x54]
mov edx, ebx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x68]
sub edx, eax
cmp edx, edi
jae 0x409c04
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
cmp edx, edi
jb 0x409068
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x48]
sub esi, eax
lea eax, [ecx + esi]
add edx, eax
cmp ecx, edx
jae 0x40b092
mov edx, esi
mov dword [esp], ebx
neg edx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp + 0x50], edx
call sub.msvcrt.dll_memmove
mov eax, dword [esp + 0x68]
add dword [esp + 0x48], esi
mov edx, dword [esp + 0x50]
mov dword [esp + 0x50], eax
add ebx, edx
mov eax, dword [esp + 0x50]
cmp edi, 0xf
jbe 0x40b379
mov edx, dword [eax]
add ebx, 0x10
add eax, 0x10
mov dword [ebx - 0x10], edx
mov edx, dword [eax - 0xc]
mov dword [ebx - 0xc], edx
mov edx, dword [eax - 8]
mov dword [ebx - 8], edx
mov edx, dword [eax - 4]
mov dword [ebx - 4], edx
cmp dword [esp + 0x48], 0x10
jle 0x409c79
mov esi, dword [esp + 0x4c]
lea esi, [esi]
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov edi, dword [eax - 0x10]
mov dword [ebx - 0x10], edi
mov edi, dword [eax - 0xc]
mov dword [ebx - 0xc], edi
mov edi, dword [eax - 8]
mov dword [ebx - 8], edi
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, esi
jb 0x409c40
mov eax, dword [esp + 0x40]
cmp eax, 0xffffff88
ja 0x40b77b
add dword [esp + 0x3c], 1
add ebp, eax
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
jne 0x409af0
mov edi, ebp
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x128]
mov dword [ebx + 0x682c], eax
mov eax, dword [esp + 0x12c]
mov dword [ebx + 0x6830], eax
mov eax, dword [esp + 0x130]
mov dword [ebx + 0x6834], eax
mov eax, dword [esp + 0xb8]
mov ebx, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
sub ebx, eax
sub edx, edi
cmp edx, ebx
jb 0x40b0c0
test edi, edi
je 0x4093f5
jmp 0x4093df
test dl, dl
jne 0x409990
mov esi, ebp
jmp 0x40977a
mov ecx, 0x20
mov esi, eax
sub ecx, ebx
cmp ecx, eax
cmova ecx, eax
sub esi, ecx
mov dword [esp + 0xa8], ecx
add ebx, ecx
neg ecx
shr edx, cl
mov dword [esp + 0xa4], esi
mov ecx, esi
mov esi, dword [esp + 0x7c]
shl edx, cl
add edx, esi
cmp ebx, 0x20
ja 0x409d7f
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x40ad21
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409d7f
mov edi, ebx
mov ecx, ebp
shr edi, 3
sub ecx, edi
cmp ecx, esi
jae 0x409d6a
mov edi, ebp
mov ecx, esi
sub edi, esi
shl edi, 3
mov ebp, ecx
sub ebx, edi
mov edi, dword [ecx]
movzx ecx, byte [esp + 0xa3]
mov byte [esp + 0x5c], cl
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x4096ee
mov ecx, ebx
mov esi, edi
shl esi, cl
mov ecx, dword [esp + 0xa8]
sub ecx, eax
mov eax, esi
mov esi, dword [esp + 0xa4]
shr eax, cl
add ebx, esi
add edx, eax
jmp 0x4096ee
mov esi, edx
jmp 0x40980e
mov ebp, ecx
mov edx, eax
jmp 0x4098b1
mov eax, dword [esp + 0x160]
mov dword [esp + 0x50], 3
mov edx, 2
movzx eax, word [eax]
mov ebx, eax
mov word [esp + 0x40], ax
shr bx, 4
movzx ebx, bx
jmp 0x408967
mov eax, dword [esp + 0x160]
movzx eax, word [eax]
mov ebx, eax
mov word [esp + 0x40], ax
mov eax, 2
shr bx, 4
movzx ebx, bx
jmp 0x408618
mov esi, dword [esp + 0x34]
mov ecx, dword [esi + 0xc]
mov ebp, dword [ecx]
mov eax, ebp
movzx edx, ah
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a2f6
lea eax, [esi + 0x73e8]
mov dword [esp + 0x64], eax
test dl, dl
je 0x40b0ca
test ebx, ebx
je 0x409068
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ebx - 1]
cmp ebx, 3
jbe 0x40b523
lea esi, [eax + ebx - 4]
mov eax, dword [esi]
mov dword [esp + 0x44], eax
test dl, dl
je 0x409068
movzx eax, dl
mov edx, 8
bsr eax, eax
sub edx, eax
mov eax, dword [esp + 0x64]
add eax, edi
mov dword [esp + 0x58], eax
lea eax, [ecx + 4]
mov dword [esp + 0x54], eax
mov eax, ebp
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x64]
add eax, 4
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x409f68
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b16d
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40aef3
mov eax, dword [esp + 0x58]
mov esi, dword [ebp]
sub eax, 3
mov dword [esp + 0x44], esi
mov esi, ebp
cmp ebx, eax
setb al
shl ecx, 3
sub edx, ecx
test al, al
je 0x40af06
mov eax, dword [esp + 0x44]
mov ecx, edx
shl eax, cl
movzx ecx, byte [esp + 0x5c]
shr eax, cl
mov ecx, dword [esp + 0x54]
lea eax, [ecx + eax*4]
movzx ecx, word [eax]
mov word [ebx], cx
movzx ebp, byte [eax + 2]
movzx eax, byte [eax + 3]
add ebp, edx
mov edx, dword [esp + 0x44]
mov ecx, ebp
add eax, ebx
shl edx, cl
movzx ecx, byte [esp + 0x5c]
shr edx, cl
mov ecx, dword [esp + 0x54]
lea ecx, [ecx + edx*4]
movzx edx, word [ecx]
mov word [eax], dx
movzx edx, byte [ecx + 2]
movzx ebx, byte [ecx + 3]
add edx, ebp
add ebx, eax
cmp edx, 0x20
ja 0x40b641
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x409ed0
mov eax, edx
and edx, 7
shr eax, 3
sub esi, eax
mov eax, dword [esi]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x58]
sub eax, 3
cmp ebx, eax
setb al
jmp 0x409f07
mov ebp, dword [esp + 0x44]
mov edi, 0xffffffba
test ebp, ebp
jne 0x4088f5
test esi, esi
jne 0x40adcd
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x40], 0
mov dword [ebx + 0x7394], 0
mov eax, ebx
mov ebx, dword [esp + 0x3c]
mov esi, dword [eax + 0x7368]
mov dword [esp + 0x58], ebx
mov ebx, dword [eax + 0x7378]
mov dword [esp + 0xbc], esi
add ebx, esi
mov dword [esp + 0x5c], ebx
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x40]
sub ebx, esi
sub eax, edi
cmp eax, ebx
jb 0x40b0c0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40ad00
mov edi, dword [esp + 0x40]
jmp 0x4093f5
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
add eax, ebx
mov dword [esp + 0x84], eax
add esi, edi
mov dword [esp + 0x80], esi
jmp 0x4094e5
je 0x40b673
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x408d18
mov eax, dword [esp + 0x12c]
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x3c], eax
jmp 0x408d18
mov ebx, dword [esp + 0x78]
mov ecx, ebx
add edx, ebx
neg ecx
mov dword [esp + 0x100], edx
shr edi, cl
add edi, eax
cmp edx, 0x20
ja 0x408cf4
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b17d
mov ecx, dword [esp + 0x108]
cmp eax, ecx
je 0x408cf4
mov ebx, edx
mov esi, eax
shr ebx, 3
sub esi, ebx
mov dword [esp + 0x78], ebx
mov ebx, esi
cmp esi, ecx
jae 0x40a0d4
sub eax, ecx
mov ebx, ecx
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x78]
mov eax, dword [ebx]
mov dword [esp + 0x104], ebx
shl ecx, 3
mov dword [esp + 0xfc], eax
sub edx, ecx
mov dword [esp + 0x100], edx
jmp 0x408cf4
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x104], ebx
movzx ecx, byte [ebx]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40a12f
cmp edx, 3
jne 0x40a143
movzx edx, byte [ebx + 2]
shl edx, 0x10
add ecx, edx
mov dword [esp + 0xfc], ecx
mov ebx, dword [esp + 0x40]
movzx edx, byte [ebx + 1]
shl edx, 8
add edx, ecx
mov dword [esp + 0xfc], edx
movzx eax, byte [eax]
test al, al
je 0x409068
mov ebx, dword [esp + 0x54]
bsr eax, eax
mov edx, dword [esp + 0x50]
sub edx, dword [esp + 0x164]
lea edx, [ebx + edx + 5]
shl edx, 3
sub edx, eax
mov dword [esp + 0x100], edx
jmp 0x4095ad
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
jmp 0x4096ee
cmp edx, 0x20
ja 0x40b360
mov edi, dword [esp + 0x104]
mov ecx, dword [esp + 0x10c]
cmp edi, ecx
jae 0x40a21e
mov eax, dword [esp + 0x108]
cmp edi, eax
je 0x40a241
mov ecx, edx
mov esi, edi
shr ecx, 3
sub esi, ecx
cmp esi, eax
jae 0x40a1c9
sub edi, eax
mov esi, eax
mov ecx, edi
mov eax, dword [esi]
shl ecx, 3
mov dword [esp + 0x104], esi
sub edx, ecx
mov dword [esp + 0x100], edx
mov dword [esp + 0xfc], eax
jmp 0x408d35
movzx eax, byte [esp + 0x54]
mov edi, dword [esp + 0xfc]
mov ecx, edx
shl edi, cl
mov ecx, eax
add edx, eax
neg ecx
mov dword [esp + 0x100], edx
shr edi, cl
add dword [esp + 0x4c], edi
jmp 0x408d25
mov eax, dword [esp + 0xfc]
jmp 0x408d96
mov esi, edx
mov eax, edi
and edx, 7
shr esi, 3
mov dword [esp + 0x100], edx
sub eax, esi
mov edi, dword [eax]
mov dword [esp + 0x104], eax
mov dword [esp + 0xfc], edi
cmp byte [esp + 0x50], 0
je 0x408d57
mov edi, dword [esp + 0xfc]
mov ecx, edx
add edx, ebx
shl edi, cl
mov ecx, ebx
mov dword [esp + 0x100], edx
neg ecx
shr edi, cl
add dword [esp + 0x48], edi
jmp 0x408d40
lea eax, [ebx + 3]
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], eax
jb 0x4088f0
movzx eax, word [ebx + 1]
add eax, 0x7f00
mov dword [esp + 0x44], eax
jmp 0x4091ab
mov ecx, edx
and edx, 7
shr ecx, 3
mov dword [esp + 0x100], edx
sub eax, ecx
mov dword [esp + 0x104], eax
mov eax, dword [eax]
mov dword [esp + 0xfc], eax
jmp 0x409017
mov eax, edx
and edx, 7
shr eax, 3
sub ecx, eax
mov eax, dword [ecx]
mov dword [esp + 0x104], ecx
mov dword [esp + 0xfc], eax
jmp 0x408e34
mov ecx, edx
and edx, 7
shr ecx, 3
sub eax, ecx
mov dword [esp + 0x104], eax
mov eax, dword [eax]
mov dword [esp + 0xfc], eax
jmp 0x408d96
mov ebp, esi
test dl, dl
lea esi, [esi + 0x73e8]
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov eax, esi
je 0x40b10f
call fcn.00402f20
cmp eax, 0xffffff88
ja 0x409068
lea eax, [esi + edi]
mov dword [ebp + 0x7368], esi
mov dword [ebp + 0x7378], edi
mov dword [ebp + 0x72f8], 1
mov dword [esp + 0x58], eax
jmp 0x408882
mov ebp, ecx
jmp 0x4096e1
mov ebp, ecx
jmp 0x4099e0
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], edi
mov edx, dword [esp + 0x80]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xb8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x48]
mov dword [esp], eax
mov eax, ebp
call fcn.00408450
mov dword [esp + 0x40], eax
jmp 0x409c79
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x40]
mov ecx, ebx
mov dword [esp], eax
mov edx, ebp
mov eax, esi
call fcn.00406610
cmp eax, ebx
jae 0x409068
cmp eax, 0xffffff88
ja 0x409068
sub ebx, eax
mov ecx, ebp
mov dword [esp + 4], esi
mov edx, edi
mov dword [esp], ebx
add ecx, eax
mov eax, dword [esp + 0x44]
call fcn.00404140
cmp eax, 0xffffff88
jbe 0x40885a
jmp 0x409068
mov eax, 0x91
mov ebp, 0x763
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x58], 0x2d2
jmp 0x4087ca
mov esi, ebp
mov ebp, dword [esp + 0xac]
test dl, dl
je 0x40a432
mov dword [esp + 0x100], ebx
mov ebp, ebx
test al, al
je 0x40a441
mov eax, dword [esp + 0x60]
mov dword [esp + 0x13c], eax
cmp byte [esp + 0x5c], 0
je 0x40a456
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov eax, ebp
cmp ebp, 0x20
ja 0x409aa8
mov ebp, dword [esp + 0x38]
lea esi, [esi]
mov esi, dword [esp + 0x10c]
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x50], esi
cmp ecx, esi
jae 0x40ab28
mov esi, dword [esp + 0x108]
mov edx, ecx
cmp ecx, esi
je 0x40a4bc
mov ebx, eax
shr ebx, 3
sub edx, ebx
cmp edx, esi
jae 0x40a4a0
mov ebx, ecx
mov edx, esi
sub ebx, esi
shl ebx, 3
mov dword [esp + 0x104], edx
sub eax, ebx
mov dword [esp + 0x100], eax
mov eax, dword [edx]
mov dword [esp + 0xfc], eax
mov esi, dword [esp + 0x44]
cmp dword [esp + 0x3c], esi
jge 0x40b282
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x114]
mov ebx, dword [esp + 0x128]
lea esi, [eax + ecx*8]
mov ecx, dword [esp + 0x120]
movzx eax, byte [esi + 2]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x54], al
mov eax, dword [esi + 4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x124]
lea edi, [eax + ecx*8]
mov ecx, dword [esp + 0x118]
movzx eax, byte [edi + 2]
mov dword [esp + 0x60], edi
mov byte [esp + 0x58], al
mov eax, dword [edi + 4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x11c]
lea eax, [eax + ecx*8]
movzx esi, byte [eax + 2]
mov dword [esp + 0x64], eax
mov eax, dword [eax + 4]
mov ecx, esi
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x100]
cmp cl, 1
jbe 0x40a990
mov edi, dword [esp + 0xfc]
movzx ebx, cl
mov ecx, eax
mov dword [esp + 0x70], edi
shl edi, cl
mov ecx, esi
cmp cl, 0x18
jbe 0x40a9c0
cmp byte [esp + 0xa2], 0
je 0x40a9c0
mov esi, 0x20
mov ecx, ebx
sub esi, eax
cmp esi, ebx
cmova esi, ebx
sub ecx, esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], ecx
mov esi, ecx
mov ecx, dword [esp + 0x74]
add eax, ecx
neg ecx
shr edi, cl
mov ecx, esi
mov dword [esp + 0x100], eax
shl edi, cl
mov ecx, dword [esp + 0x6c]
add edi, ecx
cmp eax, 0x20
ja 0x40a610
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jae 0x40b143
mov esi, dword [esp + 0x108]
mov dword [esp + 0x6c], esi
cmp esi, edx
je 0x40a610
mov esi, eax
mov ecx, edx
shr esi, 3
mov dword [esp + 0x70], esi
sub ecx, esi
mov esi, dword [esp + 0x6c]
cmp ecx, esi
jae 0x40a5ec
sub edx, esi
mov ecx, esi
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x70]
mov esi, dword [ecx]
mov dword [esp + 0x104], ecx
shl edx, 3
mov dword [esp + 0x70], esi
sub eax, edx
mov dword [esp + 0xfc], esi
mov dword [esp + 0x100], eax
mov ecx, dword [esp + 0x78]
test ecx, ecx
jne 0x40ae92
mov edx, dword [esp + 0x12c]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], edi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x130], edx
mov dword [esp + 0x12c], ebx
xor esi, esi
cmp byte [esp + 0x58], 0
jne 0x40aa90
movzx ebx, byte [esp + 0x54]
add esi, ebx
cmp esi, 0x13
jg 0x40aa30
cmp byte [esp + 0x54], 0
jne 0x40ab00
mov edx, dword [esp + 0x104]
cmp eax, 0x20
ja 0x40aac0
mov esi, dword [esp + 0x50]
cmp edx, esi
jae 0x40ab70
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40aac0
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a6a6
mov ecx, edx
mov esi, ebx
sub ecx, ebx
mov dword [esp + 0x104], esi
mov esi, dword [esi]
shl ecx, 3
sub eax, ecx
mov dword [esp + 0xfc], esi
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x48]
lea edx, [edi + ebx]
mov edi, dword [esp + 0x5c]
add dword [esp + 0x13c], edx
mov ebx, esi
movzx edx, byte [edi + 3]
add eax, edx
mov ecx, eax
neg ecx
shr ebx, cl
mov ecx, dword [edx*4 + 0x417a00]
and ecx, ebx
mov edx, ecx
movzx ecx, word [edi]
mov edi, dword [esp + 0x60]
add edx, ecx
mov dword [esp + 0x110], edx
movzx ebx, byte [edi + 3]
movzx edx, word [edi]
mov edi, esi
add eax, ebx
mov ecx, eax
mov dword [esp + 0x100], eax
neg ecx
shr edi, cl
mov ecx, dword [ebx*4 + 0x417a00]
and ecx, edi
add edx, ecx
mov dword [esp + 0x120], edx
cmp eax, 0x20
ja 0x40a76f
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ab50
mov ebx, dword [esp + 0x108]
cmp edx, ebx
je 0x40a76f
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a75a
mov ecx, edx
mov esi, ebx
sub ecx, ebx
mov dword [esp + 0x104], esi
mov esi, dword [esi]
shl ecx, 3
sub eax, ecx
mov dword [esp + 0xfc], esi
mov edi, dword [esp + 0x64]
movzx ebx, byte [edi + 3]
movzx edx, word [edi]
add eax, ebx
mov ecx, eax
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x3c]
neg ecx
and eax, 3
shr esi, cl
and esi, dword [ebx*4 + 0x417a00]
mov dword [esp + 0x60], eax
shl eax, 4
add edx, esi
mov ecx, dword [esp + eax + 0xbc]
mov esi, dword [esp + eax + 0xc0]
mov dword [esp + 0x118], edx
mov edx, dword [esp + 0xb8]
mov edi, dword [esp + eax + 0xc4]
lea eax, [ecx + esi]
mov dword [esp + 0x58], esi
lea ebx, [ebp + ecx]
lea esi, [ebp + eax]
mov dword [esp + 0x54], eax
lea eax, [edx + ecx]
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], esi
mov edi, eax
sub edi, 0x20
cmp edi, esi
jb 0x40ab90
mov edi, dword [esp + 0x64]
cmp dword [esp + 0x84], edi
jb 0x40ab90
mov edi, dword [esp + 0x54]
sub eax, ebp
add edi, 0x20
cmp eax, edi
jb 0x40ab90
mov edi, dword [edx]
mov dword [ebp], edi
mov edi, dword [edx + 4]
mov dword [ebp + 4], edi
mov edi, dword [edx + 8]
mov dword [ebp + 8], edi
mov edi, dword [edx + 0xc]
mov dword [ebp + 0xc], edi
cmp ecx, 0x10
ja 0x40ac85
mov eax, dword [esp + 0x6c]
mov edx, ebx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x68]
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jae 0x40a8c5
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jb 0x409068
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x8c]
mov edx, dword [esp + 0x58]
sub ecx, eax
lea eax, [edi + ecx]
add edx, eax
cmp edi, edx
jae 0x40abea
mov edi, ecx
mov dword [esp], ebx
neg edi
mov dword [esp + 4], eax
mov dword [esp + 8], edi
add ebx, edi
mov dword [esp + 0x5c], ecx
call sub.msvcrt.dll_memmove
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x50], 0xf
jbe 0x40ae0b
mov eax, dword [esp + 0x5c]
add ebx, 0x10
mov edx, dword [eax]
add eax, 0x10
mov dword [ebx - 0x10], edx
mov edx, dword [eax - 0xc]
mov dword [ebx - 0xc], edx
mov edx, dword [eax - 8]
mov dword [ebx - 8], edx
mov edx, dword [eax - 4]
mov dword [ebx - 4], edx
cmp dword [esp + 0x58], 0x10
jle 0x40a939
mov esi, dword [esp + 0x70]
lea esi, [esi]
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov edi, dword [eax - 0x10]
mov dword [ebx - 0x10], edi
mov edi, dword [eax - 0xc]
mov dword [ebx - 0xc], edi
mov edi, dword [eax - 8]
mov dword [ebx - 8], edi
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, esi
jb 0x40a900
mov esi, dword [esp + 0x54]
cmp esi, 0xffffff88
ja 0x40b774
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x40]
add ebp, esi
mov ebx, dword [esp + 0x48]
add dword [esp + 0x3c], 1
shl eax, 4
mov dword [esp + eax + 0xbc], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + eax + 0xc0], ebx
mov dword [esp + eax + 0xc4], edi
mov eax, dword [esp + 0x100]
cmp eax, 0x20
jbe 0x40a468
mov edi, ebp
jmp 0x409aac
je 0x40b1a3
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x40a640
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x128], edx
mov dword [esp + 0x4c], edx
jmp 0x40a640
add eax, ebx
neg ebx
mov ecx, ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x100], eax
shr edi, cl
add edi, ebx
cmp eax, 0x20
ja 0x40a61c
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ac03
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a61c
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40aa0c
mov ecx, edx
mov esi, ebx
sub ecx, ebx
mov edx, dword [esi]
shl ecx, 3
mov dword [esp + 0x104], esi
sub eax, ecx
mov dword [esp + 0x100], eax
mov dword [esp + 0xfc], edx
jmp 0x40a61c
cmp eax, 0x20
ja 0x40adb4
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jae 0x40aacc
mov edx, dword [esp + 0x108]
cmp ecx, edx
je 0x40aaef
mov esi, eax
mov edi, ecx
shr esi, 3
sub edi, esi
cmp edi, edx
jae 0x40aa6e
mov esi, ecx
mov edi, edx
sub esi, edx
mov edx, dword [edi]
shl esi, 3
mov dword [esp + 0x104], edi
sub eax, esi
mov dword [esp + 0x100], eax
mov dword [esp + 0xfc], edx
jmp 0x40a65d
movzx esi, byte [esp + 0x58]
mov edx, dword [esp + 0xfc]
mov ecx, eax
shl edx, cl
mov ecx, esi
add eax, esi
neg ecx
mov dword [esp + 0x100], eax
shr edx, cl
add dword [esp + 0x48], edx
jmp 0x40a64d
mov esi, dword [esp + 0xfc]
jmp 0x40a6bb
mov esi, eax
and eax, 7
shr esi, 3
mov dword [esp + 0x100], eax
sub ecx, esi
mov dword [esp + 0x104], ecx
mov edx, ecx
mov ecx, dword [ecx]
mov dword [esp + 0xfc], ecx
cmp byte [esp + 0x54], 0
je 0x40a678
lea esi, [esi]
mov edx, dword [esp + 0xfc]
mov ecx, eax
add eax, ebx
shl edx, cl
mov ecx, ebx
mov dword [esp + 0x100], eax
neg ecx
shr edx, cl
add dword [esp + 0x40], edx
jmp 0x40a668
mov ebx, eax
and eax, 7
shr ebx, 3
mov dword [esp + 0x100], eax
sub ecx, ebx
mov eax, dword [ecx]
mov dword [esp + 0x104], ecx
mov edx, ecx
mov dword [esp + 0xfc], eax
jmp 0x40a4bc
mov ecx, eax
and eax, 7
shr ecx, 3
sub edx, ecx
mov esi, dword [edx]
mov dword [esp + 0x104], edx
mov dword [esp + 0xfc], esi
jmp 0x40a76f
mov ecx, eax
and eax, 7
shr ecx, 3
sub edx, ecx
mov esi, dword [edx]
mov dword [esp + 0x104], edx
mov dword [esp + 0xfc], esi
jmp 0x40a6bb
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x80]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xb8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
mov eax, ebp
call fcn.00408450
mov dword [esp + 0x54], eax
jmp 0x40a939
mov esi, dword [esp + 0x58]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], esi
call sub.msvcrt.dll_memmove
jmp 0x40a939
mov ecx, eax
and eax, 7
shr ecx, 3
mov dword [esp + 0x100], eax
sub edx, ecx
mov dword [esp + 0x104], edx
mov edx, dword [edx]
mov dword [esp + 0xfc], edx
jmp 0x40a61c
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xbc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
mov eax, ebx
call fcn.00408450
add ebx, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ebx
jmp 0x408fbd
mov esi, dword [edx + 0x10]
sub ecx, 0x10
mov dword [ebp + 0x10], esi
mov esi, dword [edx + 0x14]
mov dword [ebp + 0x14], esi
mov esi, dword [edx + 0x18]
mov dword [ebp + 0x18], esi
mov edi, dword [edx + 0x1c]
mov dword [ebp + 0x1c], edi
cmp ecx, 0x10
jle 0x40a847
lea ecx, [ebp + 0x20]
add edx, 0x20
nop
mov eax, dword [edx]
add ecx, 0x20
add edx, 0x20
mov dword [ecx - 0x20], eax
mov eax, dword [edx - 0x1c]
mov dword [ecx - 0x1c], eax
mov eax, dword [edx - 0x18]
mov dword [ecx - 0x18], eax
mov eax, dword [edx - 0x14]
mov dword [ecx - 0x14], eax
mov esi, dword [edx - 0x10]
mov dword [ecx - 0x10], esi
mov esi, dword [edx - 0xc]
mov dword [ecx - 0xc], esi
mov esi, dword [edx - 8]
mov dword [ecx - 8], esi
mov edi, dword [edx - 4]
mov dword [ecx - 4], edi
cmp ecx, ebx
jb 0x40acb0
jmp 0x40a847
cmp dword [esp + 0x3c], ebx
jb 0x40b0c0
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov dword [esp + 4], esi
mov esi, dword [esp + 0x40]
mov dword [esp + 8], ebx
mov dword [esp], esi
call sub.msvcrt.dll_memcpy
mov eax, esi
add eax, ebx
mov dword [esp + 0x40], eax
jmp 0x40a00a
mov ecx, ebx
and ebx, 7
shr ecx, 3
sub ebp, ecx
movzx ecx, byte [esp + 0xa3]
mov edi, dword [ebp]
mov byte [esp + 0x5c], cl
jmp 0x409d7f
mov eax, dword [esp + 0x40]
mov dword [esp + 0x104], eax
movzx ecx, byte [eax]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40ad6e
cmp edx, 3
jne 0x40ad82
movzx eax, byte [eax + 2]
shl eax, 0x10
add ecx, eax
mov dword [esp + 0xfc], ecx
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + 1]
shl eax, 8
add eax, ecx
mov dword [esp + 0xfc], eax
movzx eax, byte [ebx]
test al, al
je 0x409068
mov ebx, dword [esp + 0x54]
bsr eax, eax
mov edx, dword [esp + 0x50]
sub edx, dword [esp + 0x164]
lea edx, [ebx + edx + 5]
shl edx, 3
sub edx, eax
mov dword [esp + 0x100], edx
jmp 0x408b33
mov edx, dword [esp + 0xfc]
cmp byte [esp + 0x54], 0
mov esi, edx
je 0x40a6bb
jmp 0x40ab07
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x3c]
xor edi, edi
mov dword [esp + 0x80], ebx
mov ebx, eax
mov dword [eax + 0x7394], 0
mov esi, dword [ebx + 0x7378]
mov eax, dword [eax + 0x7368]
add esi, eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x84], esi
jmp 0x409cd1
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
cmp edi, 7
ja 0x40b32a
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [edi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [edi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x58], 8
jbe 0x40a939
mov esi, dword [esp + 0x5c]
mov eax, ebx
lea edx, [ebx + 8]
sub eax, esi
lea ecx, [esi + 8]
cmp eax, 0xf
jg 0x40b702
mov esi, dword [esp + 0x70]
lea esi, [esi]
nop
mov eax, dword [ecx]
add edx, 8
add ecx, 8
mov dword [edx - 8], eax
mov eax, dword [ecx - 4]
mov dword [edx - 4], eax
cmp edx, esi
jb 0x40ae78
jmp 0x40a939
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov ecx, eax
sub esi, ebx
mov ebx, dword [esp + 0x78]
shl edx, cl
mov ecx, esi
shr edx, cl
add eax, ebx
mov dword [esp + 0x100], eax
add edi, edx
jmp 0x40a61c
mov ecx, ebx
mov eax, edi
mov esi, dword [esp + 0x7c]
add ebx, 1
shl eax, cl
shr eax, 0x1f
cmp dword [esp + 0x48], 1
adc esi, eax
cmp esi, 3
je 0x40b5bf
mov edx, dword [esp + esi*4 + 0x128]
cmp edx, 1
adc edx, 0
cmp esi, 1
je 0x4096fc
jmp 0x4096ee
mov ecx, eax
mov eax, esi
sub eax, ecx
sub esi, eax
shl eax, 3
sub edx, eax
mov eax, dword [esi]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
cmp edx, 0x20
ja 0x40afc3
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x40af8f
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40afc3
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40afb0
cmp dword [esp + 0x68], ebx
mov esi, dword [ebp]
setae al
shl ecx, 3
mov dword [esp + 0x44], esi
sub edx, ecx
mov esi, ebp
test al, al
je 0x40afc3
mov eax, dword [esp + 0x44]
mov ecx, edx
shl eax, cl
movzx ecx, byte [esp + 0x5c]
shr eax, cl
mov ecx, dword [esp + 0x54]
lea eax, [ecx + eax*4]
movzx ecx, word [eax]
mov word [ebx], cx
movzx ecx, byte [eax + 2]
movzx eax, byte [eax + 3]
add edx, ecx
add ebx, eax
cmp edx, 0x20
ja 0x40afc3
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x40af30
mov eax, edx
and edx, 7
shr eax, 3
sub esi, eax
cmp dword [esp + 0x68], ebx
mov eax, dword [esi]
mov dword [esp + 0x44], eax
setae al
jmp 0x40af5e
mov ecx, eax
mov eax, esi
sub eax, ecx
sub esi, eax
shl eax, 3
sub edx, eax
mov eax, dword [esi]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x68]
cmp ecx, ebx
jb 0x40b015
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x54]
mov dword [esp + 0x5c], edi
mov edi, ecx
neg eax
and eax, 0x1f
mov ebp, eax
lea esi, [esi]
mov eax, dword [esp + 0x44]
mov ecx, edx
shl eax, cl
mov ecx, ebp
shr eax, cl
lea eax, [esi + eax*4]
movzx ecx, word [eax]
mov word [ebx], cx
movzx ecx, byte [eax + 2]
movzx eax, byte [eax + 3]
add edx, ecx
add ebx, eax
cmp edi, ebx
jae 0x40afe8
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
cmp ebx, eax
jae 0x40b33f
mov eax, dword [esp + 0x44]
mov ecx, edx
shl eax, cl
mov ecx, dword [esp + 0x6c]
neg ecx
shr eax, cl
mov ecx, dword [esp + 0x54]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [ebx], cl
cmp byte [eax + 3], 1
je 0x40b339
cmp edx, 0x1f
ja 0x40b33f
movzx eax, byte [eax + 2]
add edx, eax
cmp edx, 0x20
jbe 0x40b33f
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409068
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x64]
mov dword [eax + 0x7378], edi
mov dword [eax + 0x7368], ebx
mov dword [eax + 0x72f8], 1
mov eax, dword [esp + 0x58]
jmp 0x408882
mov esi, dword [esp + 0x48]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], esi
call sub.msvcrt.dll_memmove
jmp 0x409c79
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memmove
jmp 0x408fb9
mov edi, 0xffffffba
jmp 0x4088f5
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov dword [esp], ebx
call fcn.00405120
cmp eax, 0xffffff88
ja 0x409068
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x64]
mov dword [eax + 0x7378], edi
mov dword [eax + 0x7368], ebx
mov dword [eax + 0x72f8], 1
lea eax, [ebx + edi]
mov dword [esp + 0x58], eax
jmp 0x408882
call fcn.00404140
cmp eax, 0xffffff88
ja 0x409068
mov eax, dword [esp + 0x34]
mov dword [eax + 0x7368], esi
mov dword [eax + 0x7378], edi
mov dword [eax + 0x72f8], 1
lea eax, [esi + edi]
mov dword [esp + 0x58], eax
jmp 0x408882
mov ecx, eax
and eax, 7
shr ecx, 3
mov dword [esp + 0x100], eax
sub edx, ecx
mov esi, dword [edx]
mov dword [esp + 0x104], edx
mov dword [esp + 0x70], esi
mov dword [esp + 0xfc], esi
jmp 0x40a610
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40af1a
mov ecx, edx
and edx, 7
shr ecx, 3
mov dword [esp + 0x100], edx
sub eax, ecx
mov dword [esp + 0x104], eax
mov eax, dword [eax]
mov dword [esp + 0xfc], eax
jmp 0x408cf4
mov edx, dword [esp + 0xfc]
mov ecx, eax
mov ebx, dword [esp + 0x6c]
add eax, 1
mov dword [esp + 0x100], eax
shl edx, cl
shr edx, 0x1f
cmp dword [esp + 0x40], 1
adc ebx, edx
cmp ebx, 3
je 0x40b502
mov ecx, dword [esp + ebx*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp ebx, 1
jne 0x40b510
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x12c], ebx
jmp 0x40a640
mov edi, dword [esp + 0x54]
jmp 0x4088f5
mov eax, dword [edx + 0x10]
sub ecx, 0x10
mov dword [ebp + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [ebp + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [ebp + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [ebp + 0x1c], eax
cmp ecx, 0x10
jle 0x409b8e
mov dword [esp + 0x5c], edi
lea ecx, [ebp + 0x20]
add edx, 0x20
lea esi, [esi]
nop
mov eax, dword [edx]
add ecx, 0x20
add edx, 0x20
mov dword [ecx - 0x20], eax
mov eax, dword [edx - 0x1c]
mov dword [ecx - 0x1c], eax
mov eax, dword [edx - 0x18]
mov dword [ecx - 0x18], eax
mov eax, dword [edx - 0x14]
mov dword [ecx - 0x14], eax
mov edi, dword [edx - 0x10]
mov dword [ecx - 0x10], edi
mov edi, dword [edx - 0xc]
mov dword [ecx - 0xc], edi
mov edi, dword [edx - 8]
mov dword [ecx - 8], edi
mov esi, dword [edx - 4]
mov dword [ecx - 4], esi
cmp ecx, ebx
jb 0x40b240
mov edi, dword [esp + 0x5c]
jmp 0x409b8e
mov edi, ebp
jmp 0x409aba
mov esi, dword [esp + 0xbc]
lea edi, [ecx + 0x10]
mov dword [esp + 0x64], edi
lea edx, [esi + 0x10]
mov edi, edx
mov edx, dword [esi + 0x10]
mov dword [ecx + 0x10], edx
mov ecx, edi
mov edx, dword [edi + 4]
mov edi, dword [esp + 0x64]
mov dword [edi + 4], edx
mov edx, dword [ecx + 8]
mov dword [edi + 8], edx
mov edx, dword [esp + 0x48]
mov ecx, dword [ecx + 0xc]
sub edx, 0x10
mov dword [edi + 0xc], ecx
cmp edx, 0x10
jle 0x408edc
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x50]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x64], eax
lea edx, [ecx + 0x20]
lea ecx, [esi + 0x20]
mov esi, dword [ecx]
add edx, 0x20
add ecx, 0x20
mov dword [edx - 0x20], esi
mov esi, dword [ecx - 0x1c]
mov dword [edx - 0x1c], esi
mov esi, dword [ecx - 0x18]
mov dword [edx - 0x18], esi
mov esi, dword [ecx - 0x14]
mov dword [edx - 0x14], esi
mov eax, dword [ecx - 0x10]
mov dword [edx - 0x10], eax
mov eax, dword [ecx - 0xc]
mov dword [edx - 0xc], eax
mov eax, dword [ecx - 8]
mov dword [edx - 8], eax
mov ebp, dword [ecx - 4]
mov dword [edx - 4], ebp
cmp edx, ebx
jb 0x40b2e0
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x50], edi
jmp 0x408edc
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40ae4d
movzx eax, byte [eax + 2]
add edx, eax
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409068
cmp edx, 0x20
jne 0x409068
jmp 0x40b06b
mov edi, dword [esp + 0xfc]
cmp byte [esp + 0x50], 0
mov eax, edi
je 0x408d96
jmp 0x40a253
cmp edi, 7
ja 0x40b6c6
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [edi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [edi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x48], 8
jbe 0x409c79
mov eax, dword [esp + 0x50]
mov ecx, ebx
lea edx, [ebx + 8]
sub ecx, eax
lea esi, [eax + 8]
cmp ecx, 0xf
jg 0x40b7e1
mov ecx, dword [esp + 0x4c]
mov eax, dword [esi]
add edx, 8
add esi, 8
mov dword [edx - 8], eax
mov eax, dword [esi - 4]
mov dword [edx - 4], eax
cmp edx, ecx
jb 0x40b3d9
jmp 0x409c79
mov esi, dword [esp + 0x3c]
cmp esi, 7
ja 0x40b6d5
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [esi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [esi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
cmp dword [esp + 0x4c], 8
jbe 0x408fb9
mov ecx, ebx
lea esi, [eax + 8]
lea edx, [ebx + 8]
sub ecx, eax
cmp ecx, 0xf
jg 0x40b784
mov eax, dword [esi]
add edx, 8
add esi, 8
mov dword [edx - 8], eax
mov eax, dword [esi - 4]
mov dword [edx - 4], eax
cmp edx, ebp
jb 0x40b44b
jmp 0x408fb9
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x78]
mov ecx, edx
mov eax, dword [esp + 0x80]
sub ebx, esi
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x84]
shr eax, cl
add edx, ebx
add edi, eax
mov dword [esp + 0x100], edx
jmp 0x408cf4
cmp edx, 0x20
ja 0x40b4c7
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x409068
cmp dword [esp + 0x108], eax
jne 0x409068
cmp edx, 0x20
jne 0x409068
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x128]
mov esi, dword [esp + 0xbc]
mov dword [ebx + 0x682c], eax
mov eax, dword [esp + 0x12c]
mov dword [ebx + 0x6830], eax
mov eax, dword [esp + 0x130]
mov dword [ebx + 0x6834], eax
mov ebx, dword [esp + 0x5c]
jmp 0x409fea
mov edx, dword [esp + 0x4c]
xor ecx, ecx
sub edx, 1
sete cl
add ecx, edx
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x130], edx
jmp 0x40b1e5
movzx esi, byte [eax]
mov dword [esp + 0x44], esi
cmp ebx, 2
je 0x40b541
cmp ebx, 3
jne 0x40b550
movzx eax, byte [eax + 2]
shl eax, 0x10
add esi, eax
mov dword [esp + 0x44], esi
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + 1]
shl eax, 8
add dword [esp + 0x44], eax
test dl, dl
je 0x409068
movzx eax, dl
bsr esi, eax
mov eax, 5
sub eax, ebx
mov edx, eax
mov eax, dword [esp + 0x64]
shl edx, 3
add eax, edi
sub edx, esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0x58], eax
lea eax, [ecx + 4]
mov dword [esp + 0x54], eax
mov eax, ebp
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x6c], eax
jmp 0x409eaa
mov ecx, edx
and edx, 7
shr ecx, 3
mov dword [esp + 0x100], edx
sub eax, ecx
mov dword [esp + 0x104], eax
mov eax, dword [eax]
mov dword [esp + 0x80], eax
mov dword [esp + 0xfc], eax
jmp 0x408ce5
mov eax, dword [esp + 0x54]
xor edx, edx
sub eax, 1
sete dl
add edx, eax
jmp 0x4096ee
mov eax, dword [esp + 0x34]
mov esi, dword [eax + 0x72b0]
mov ebx, dword [eax + 0x7368]
mov dword [eax + 0x7394], 0
mov edi, dword [eax + 0x7378]
mov ebp, dword [eax + 0x72b8]
mov dword [esp + 0x48], esi
mov esi, dword [eax + 0x72b4]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x3c]
add eax, esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x58], eax
lea eax, [ebx + edi]
mov esi, ebx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x74], eax
jmp 0x408a93
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40afc3
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409068
sub dword [esp + 0x40], 0x14
mov dword [esp + 0x54], 0xffffffec
jmp 0x408fc9
mov edi, dword [esp + 0xfc]
mov ecx, edx
add edx, 1
mov dword [esp + 0x100], edx
shl edi, cl
mov ecx, edi
shr ecx, 0x1f
cmp dword [esp + 0x48], 1
adc eax, ecx
cmp eax, 3
je 0x40b6e4
mov ecx, dword [esp + eax*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp eax, 1
jne 0x40b6f2
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x12c], eax
jmp 0x408d18
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b3b3
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b42d
mov eax, dword [esp + 0x3c]
xor ecx, ecx
sub eax, 1
sete cl
add ecx, eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x130], eax
jmp 0x40b6ab
mov eax, dword [esi + 8]
mov dword [ebx + 8], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [ecx + 8]
mov dword [edx + 8], eax
mov ecx, dword [ecx + 0xc]
mov dword [edx + 0xc], ecx
mov edx, dword [esp + 0x58]
sub edx, 8
cmp edx, 0x10
jle 0x40a939
mov eax, esi
mov esi, dword [esp + 0x70]
add ebx, 0x18
add eax, 0x18
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov edi, dword [eax - 0x10]
mov dword [ebx - 0x10], edi
mov edi, dword [eax - 0xc]
mov dword [ebx - 0xc], edi
mov edi, dword [eax - 8]
mov dword [ebx - 8], edi
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, esi
jb 0x40b736
jmp 0x40a939
mov edi, esi
jmp 0x4088f5
mov edi, dword [esp + 0x40]
jmp 0x4088f5
mov edi, edx
mov edx, dword [esp + 0x4c]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
sub edx, 8
cmp edx, 0x10
jle 0x408fb9
add ebx, 0x18
add eax, 0x18
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov esi, dword [eax - 0x10]
mov dword [ebx - 0x10], esi
mov esi, dword [eax - 0xc]
mov dword [ebx - 0xc], esi
mov esi, dword [eax - 8]
mov dword [ebx - 8], esi
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, ebp
jb 0x40b7a3
jmp 0x408fb9
mov edi, edx
mov edx, dword [esp + 0x48]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
sub edx, 8
cmp edx, 0x10
jle 0x409c79
mov eax, dword [esp + 0x50]
add ebx, 0x18
add eax, 0x18
mov edx, dword [eax]
add ebx, 0x20
add eax, 0x20
mov dword [ebx - 0x20], edx
mov edx, dword [eax - 0x1c]
mov dword [ebx - 0x1c], edx
mov edx, dword [eax - 0x18]
mov dword [ebx - 0x18], edx
mov edx, dword [eax - 0x14]
mov dword [ebx - 0x14], edx
mov esi, dword [eax - 0x10]
mov dword [ebx - 0x10], esi
mov esi, dword [eax - 0xc]
mov dword [ebx - 0xc], esi
mov esi, dword [eax - 8]
mov dword [ebx - 8], esi
mov esi, dword [esp + 0x4c]
mov ecx, dword [eax - 4]
mov dword [ebx - 4], ecx
cmp ebx, esi
jb 0x40b804
jmp 0x409c79
mov eax, dword [esp + 0x3c]
jmp 0x40b614