Function at 0x408690
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 0x408a10
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 0x409188
mov eax, dword [esp + 0x160]
movzx eax, byte [eax]
mov ecx, eax
and ecx, 3
cmp cl, 2
je 0x408807
cmp cl, 3
je 0x4087f0
cmp cl, 1
je 0x408a28
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409f20
cmp dl, 3
jne 0x4091c0
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 0x409520
cmp dword [esp + 0x164], esi
jb 0x409188
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 0x408abb
test ebx, ebx
je 0x4087dd
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x408abb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4087dd
jmp 0x408abb
mov esi, dword [esp + 0x34]
mov edi, 0xffffffe2
mov ebx, dword [esi + 0x72f8]
test ebx, ebx
je 0x408a15
cmp dword [esp + 0x164], 4
jbe 0x409188
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 0x4091a0
cmp al, 3
je 0x409170
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 0x409188
mov esi, dword [esp + 0x34]
mov edx, dword [esi + 0x7394]
test edx, edx
je 0x408887
cmp edi, 0x300
ja 0x4091e8
add eax, dword [esp + 0x160]
mov dword [esp + 0x40], eax
cmp cl, 3
je 0x409f48
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x409204
test edi, edi
je 0x409188
test ebx, ebx
je 0x409188
cmp ebx, edi
jae 0x40a520
mov eax, ebx
xor edx, edx
shl eax, 4
div edi
lea edx, [eax + eax*2]
shl edx, 3
mov esi, dword [edx + 0x417920]
mov ecx, dword [edx + 0x417924]
mov ebp, dword [edx + 0x417928]
mov eax, dword [edx + 0x41792c]
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 0x40a4c9
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 0x409188
cmp eax, ebx
jae 0x409188
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 0x409188
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 0x408abb
test ebx, ebx
je 0x4089f3
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x408abb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4089f3
jmp 0x408abb
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 0x409ef0
cmp dl, 3
jne 0x4091d0
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 0x409188
cmp dword [esp + 0x164], 3
je 0x409188
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 0x408a10
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 0x409280
cmp eax, 1
jne 0x408a10
mov eax, dword [esp + 0x38]
xor edx, edx
test eax, eax
je 0x40a0c9
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 0x4094a0
mov ebx, dword [esp + 0x34]
mov eax, 0x1000000
cmp eax, dword [ebx + 0x72c8]
sbb esi, dword [ebx + 0x72cc]
jb 0x409540
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 0x40ae0e
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 0x409188
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 0x40ae5f
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 0x409188
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409188
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 0x40a160
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 0x40a198
cmp byte [esp + 0xa2], 0
je 0x40a198
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 0x408e05
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b6b2
mov esi, dword [esp + 0x108]
cmp eax, esi
je 0x408e05
mov ecx, edx
mov ebx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x80], ecx
mov ecx, ebx
cmp ebx, esi
jae 0x408ddb
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 0x40b585
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 0x40a30a
movzx ebx, byte [esp + 0x50]
add eax, ebx
cmp eax, 0x13
jg 0x40a2ac
cmp byte [esp + 0x50], 0
jne 0x40a36c
cmp edx, 0x20
ja 0x40a332
mov ecx, dword [esp + 0x10c]
mov eax, dword [esp + 0x104]
cmp eax, ecx
jae 0x40a3f7
mov ebx, dword [esp + 0x108]
cmp ebx, eax
je 0x40a332
mov ecx, edx
mov edi, eax
shr ecx, 3
sub edi, ecx
cmp edi, ebx
jae 0x408ea1
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 + 0x417ac0]
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 + 0x417ac0]
and ecx, ebp
add ebx, ecx
mov dword [esp + 0x120], ebx
cmp edx, 0x20
ja 0x408f54
mov ecx, dword [esp + 0x104]
cmp ecx, dword [esp + 0x10c]
jae 0x40a3d8
mov ebx, dword [esp + 0x108]
cmp ecx, ebx
je 0x408f54
mov eax, edx
mov edi, ecx
shr eax, 3
sub edi, eax
cmp edi, ebx
jae 0x408f3f
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 + 0x417ac0]
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 0x40ad49
cmp dword [esp + 0x70], ebp
jb 0x40ad49
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, esi
add edx, 0x20
cmp ecx, edx
jb 0x40ad49
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 0x40b3a9
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 0x409067
mov esi, dword [esp + 0x74]
mov edx, ebx
sub edx, esi
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x40b771
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 0x40b1cb
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 0x40b513
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 0x4090d9
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 0x4090a0
mov dword [esp + 0x40], ebp
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409137
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40a3b2
mov ebx, dword [esp + 0x108]
cmp eax, ebx
je 0x409137
mov ecx, edx
mov esi, eax
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40911b
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 0x40b320
sub dword [esp + 0x44], 1
je 0x40b5b8
mov eax, dword [esp + 0x128]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x6c], eax
jmp 0x408cc0
mov edi, edx
movzx eax, byte [esi + 4]
and edi, 0x3ffff
cmp edi, 0x20000
jbe 0x409263
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 0x408859
shr al, 3
movzx ebx, al
mov eax, 1
jmp 0x408738
shr al, 3
mov dword [esp + 0x50], 2
mov edx, 1
movzx ebx, al
jmp 0x408a87
mov edx, dword [esi + 0xc]
lea esi, [edx + 0x4040]
add edx, 0x40
lea esi, [esi]
sub edx, 0xffffff80
cmp esi, edx
jne 0x4091f8
jmp 0x408887
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 0x409188
cmp eax, ebx
jae 0x409188
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 0x40897a
jmp 0x409188
shl eax, 0xa
shr ebx, 0x16
mov dword [esp + 0x44], 0
add ebx, eax
mov eax, 5
jmp 0x408859
mov eax, dword [esp + 0x160]
add eax, dword [esp + 0x164]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
cmp eax, 0x7f
jle 0x4092cb
cmp eax, 0xff
je 0x40a38f
mov edi, dword [esp + 0x58]
cmp dword [esp + 0x40], edi
jae 0x408a10
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 0x408a10
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], 0x417700
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417ba0
sub edx, edi
mov dword [esp + 0x10], 0x417c40
mov dword [esp + 0xc], edx
mov edx, ebp
mov dword [esp + 8], edi
mov dword [esp + 4], 9
mov dword [esp], 0x23
call fcn.004083c0
cmp eax, 0xffffff88
ja 0x409188
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], 0x4175e0
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417ea0
sub edi, ebp
mov dword [esp + 0x10], 0x417f20
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], 8
mov dword [esp], 0x1f
call fcn.004083c0
cmp eax, 0xffffff88
ja 0x409188
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], 0x4173c0
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x14], 0x417ce0
sub edi, ebp
mov dword [esp + 0x10], 0x417dc0
mov dword [esp + 0xc], edi
mov edi, ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], 9
mov dword [esp], 0x34
call fcn.004083c0
cmp eax, 0xffffff88
ja 0x409188
add edi, eax
mov dword [esp + 0x40], edi
sub edi, ebx
cmp edi, 0xffffff88
ja 0x408a15
mov eax, dword [esp + 0x38]
test eax, eax
je 0x40a0b8
mov edx, dword [esp + 0x54]
mov dword [esp + 0x54], edi
sub edx, edi
jmp 0x408b14
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 0x40a138
cmp dword [esp + 0x3c], ebx
jb 0x40b1e0
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 0x408a15
mov esi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esi + 0x7368], eax
mov dword [esi + 0x7378], ebx
jmp 0x408abb
cmp dword [esp + 0x44], 4
jle 0x408b53
mov ebx, dword [ebx + 8]
mov eax, 1
mov esi, dword [ebx + 4]
mov ecx, esi
shl eax, cl
test eax, eax
je 0x40b6f2
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 0x409578
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 0x40b966
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 0x409188
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 0x40a220
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 0x409188
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409188
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 0x409188
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 0x409994
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 0x409e30
add ebx, eax
neg eax
mov ecx, eax
mov eax, dword [esp + 0x7c]
shr edx, cl
add edx, eax
cmp ebx, 0x20
ja 0x40980e
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40a295
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40980e
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a465
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 0x409b18
movzx edx, byte [esp + 0x58]
add eax, edx
cmp eax, 0x13
jg 0x409ad0
movzx eax, byte [esp + 0x58]
test al, al
jne 0x409ab0
cmp ebx, 0x20
ja 0x409e20
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409b58
mov ecx, dword [esp + 0x40]
mov esi, ecx
cmp ebp, ecx
je 0x40989a
mov eax, ebx
mov esi, ebp
shr eax, 3
sub esi, eax
cmp esi, ecx
jae 0x40988e
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 + 0x417ac0]
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 + 0x417ac0]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x120], eax
cmp ebx, 0x20
ja 0x40993a
mov eax, dword [esp + 0x4c]
cmp esi, eax
jae 0x409b70
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x40993a
mov eax, ebx
mov edx, esi
shr eax, 3
sub edx, eax
cmp edx, ecx
jae 0x409ed8
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 + 0x417ac0]
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 0x409b90
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x409b38
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x409ee0
mov edx, ebx
mov ebp, esi
shr edx, 3
sub ebp, edx
cmp ebp, ecx
jae 0x4099bf
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 0x40a53c
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 0x4097a0
je 0x40afd8
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x409832
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x128], eax
mov dword [esp + 0x54], eax
jmp 0x409832
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 0x409865
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 0x40985c
cmp ebx, 0x20
ja 0x409e18
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409a8d
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409a9f
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a46c
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 0x40984f
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 0x40983f
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 0x4099d1
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 0x40989a
mov eax, ebx
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40993a
mov eax, dword [esp + 0x60]
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x100], ebx
mov dword [esp + 0x13c], eax
je 0x409bb7
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ebx
jg 0x409188
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ebx
jl 0x409188
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 0x409dbf
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 0x40a473
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x58], eax
jb 0x40a473
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x40]
sub eax, ebp
add esi, 0x20
cmp eax, esi
jb 0x40a473
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 0x40b329
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 0x409d24
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
cmp edx, edi
jb 0x409188
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 0x40b1b2
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 0x40b499
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 0x409d99
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 0x409d60
mov eax, dword [esp + 0x40]
cmp eax, 0xffffff88
ja 0x40b89b
add dword [esp + 0x3c], 1
add ebp, eax
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
jne 0x409c10
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 0x40b1e0
test edi, edi
je 0x409515
jmp 0x4094ff
test dl, dl
jne 0x409ab0
mov esi, ebp
jmp 0x40989a
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 0x409e9f
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x40ae41
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409e9f
mov edi, ebx
mov ecx, ebp
shr edi, 3
sub ecx, edi
cmp ecx, esi
jae 0x409e8a
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 0x40980e
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 0x40980e
mov esi, edx
jmp 0x40992e
mov ebp, ecx
mov edx, eax
jmp 0x4099d1
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 0x408a87
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 0x408738
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 0x40a416
lea eax, [esi + 0x73e8]
mov dword [esp + 0x64], eax
test dl, dl
je 0x40b1ea
test ebx, ebx
je 0x409188
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ebx - 1]
cmp ebx, 3
jbe 0x40b643
lea esi, [eax + ebx - 4]
mov eax, dword [esi]
mov dword [esp + 0x44], eax
test dl, dl
je 0x409188
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 0x40a088
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b28d
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40b013
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 0x40b026
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 0x40b761
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x409ff0
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 0x40a027
mov ebp, dword [esp + 0x44]
mov edi, 0xffffffba
test ebp, ebp
jne 0x408a15
test esi, esi
jne 0x40aeed
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 0x40b1e0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40ae20
mov edi, dword [esp + 0x40]
jmp 0x409515
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 0x409605
je 0x40b793
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x408e38
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 0x408e38
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 0x408e14
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b29d
mov ecx, dword [esp + 0x108]
cmp eax, ecx
je 0x408e14
mov ebx, edx
mov esi, eax
shr ebx, 3
sub esi, ebx
mov dword [esp + 0x78], ebx
mov ebx, esi
cmp esi, ecx
jae 0x40a1f4
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 0x408e14
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x104], ebx
movzx ecx, byte [ebx]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40a24f
cmp edx, 3
jne 0x40a263
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 0x409188
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 0x4096cd
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
jmp 0x40980e
cmp edx, 0x20
ja 0x40b480
mov edi, dword [esp + 0x104]
mov ecx, dword [esp + 0x10c]
cmp edi, ecx
jae 0x40a33e
mov eax, dword [esp + 0x108]
cmp edi, eax
je 0x40a361
mov ecx, edx
mov esi, edi
shr ecx, 3
sub esi, ecx
cmp esi, eax
jae 0x40a2e9
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 0x408e55
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 0x408e45
mov eax, dword [esp + 0xfc]
jmp 0x408eb6
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 0x408e77
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 0x408e60
lea eax, [ebx + 3]
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], eax
jb 0x408a10
movzx eax, word [ebx + 1]
add eax, 0x7f00
mov dword [esp + 0x44], eax
jmp 0x4092cb
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 0x409137
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 0x408f54
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 0x408eb6
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 0x40b22f
call fcn.00402f20
cmp eax, 0xffffff88
ja 0x409188
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 0x4089a2
mov ebp, ecx
jmp 0x409801
mov ebp, ecx
jmp 0x409b00
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.00408570
mov dword [esp + 0x40], eax
jmp 0x409d99
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 0x409188
cmp eax, 0xffffff88
ja 0x409188
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 0x40897a
jmp 0x409188
mov eax, 0x91
mov ebp, 0x763
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x58], 0x2d2
jmp 0x4088ea
mov esi, ebp
mov ebp, dword [esp + 0xac]
test dl, dl
je 0x40a552
mov dword [esp + 0x100], ebx
mov ebp, ebx
test al, al
je 0x40a561
mov eax, dword [esp + 0x60]
mov dword [esp + 0x13c], eax
cmp byte [esp + 0x5c], 0
je 0x40a576
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov eax, ebp
cmp ebp, 0x20
ja 0x409bc8
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 0x40ac48
mov esi, dword [esp + 0x108]
mov edx, ecx
cmp ecx, esi
je 0x40a5dc
mov ebx, eax
shr ebx, 3
sub edx, ebx
cmp edx, esi
jae 0x40a5c0
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 0x40b3a2
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 0x40aab0
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 0x40aae0
cmp byte [esp + 0xa2], 0
je 0x40aae0
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 0x40a730
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jae 0x40b263
mov esi, dword [esp + 0x108]
mov dword [esp + 0x6c], esi
cmp esi, edx
je 0x40a730
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 0x40a70c
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 0x40afb2
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 0x40abb0
movzx ebx, byte [esp + 0x54]
add esi, ebx
cmp esi, 0x13
jg 0x40ab50
cmp byte [esp + 0x54], 0
jne 0x40ac20
mov edx, dword [esp + 0x104]
cmp eax, 0x20
ja 0x40abe0
mov esi, dword [esp + 0x50]
cmp edx, esi
jae 0x40ac90
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40abe0
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a7c6
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 + 0x417ac0]
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 + 0x417ac0]
and ecx, edi
add edx, ecx
mov dword [esp + 0x120], edx
cmp eax, 0x20
ja 0x40a88f
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ac70
mov ebx, dword [esp + 0x108]
cmp edx, ebx
je 0x40a88f
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a87a
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 + 0x417ac0]
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 0x40acb0
mov edi, dword [esp + 0x64]
cmp dword [esp + 0x84], edi
jb 0x40acb0
mov edi, dword [esp + 0x54]
sub eax, ebp
add edi, 0x20
cmp eax, edi
jb 0x40acb0
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 0x40ada5
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 0x40a9e5
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jb 0x409188
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 0x40ad0a
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 0x40af2b
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 0x40aa59
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 0x40aa20
mov esi, dword [esp + 0x54]
cmp esi, 0xffffff88
ja 0x40b894
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 0x40a588
mov edi, ebp
jmp 0x409bcc
je 0x40b2c3
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x40a760
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x128], edx
mov dword [esp + 0x4c], edx
jmp 0x40a760
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 0x40a73c
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ad23
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a73c
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40ab2c
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 0x40a73c
cmp eax, 0x20
ja 0x40aed4
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jae 0x40abec
mov edx, dword [esp + 0x108]
cmp ecx, edx
je 0x40ac0f
mov esi, eax
mov edi, ecx
shr esi, 3
sub edi, esi
cmp edi, edx
jae 0x40ab8e
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 0x40a77d
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 0x40a76d
mov esi, dword [esp + 0xfc]
jmp 0x40a7db
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 0x40a798
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 0x40a788
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 0x40a5dc
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 0x40a88f
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 0x40a7db
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.00408570
mov dword [esp + 0x54], eax
jmp 0x40aa59
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 0x40aa59
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 0x40a73c
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.00408570
add ebx, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ebx
jmp 0x4090dd
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 0x40a967
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 0x40add0
jmp 0x40a967
cmp dword [esp + 0x3c], ebx
jb 0x40b1e0
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 0x40a12a
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 0x409e9f
mov eax, dword [esp + 0x40]
mov dword [esp + 0x104], eax
movzx ecx, byte [eax]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40ae8e
cmp edx, 3
jne 0x40aea2
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 0x409188
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 0x408c53
mov edx, dword [esp + 0xfc]
cmp byte [esp + 0x54], 0
mov esi, edx
je 0x40a7db
jmp 0x40ac27
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 0x409df1
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
cmp edi, 7
ja 0x40b44a
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 + 0x417b40]
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 0x40aa59
mov esi, dword [esp + 0x5c]
mov eax, ebx
lea edx, [ebx + 8]
sub eax, esi
lea ecx, [esi + 8]
cmp eax, 0xf
jg 0x40b822
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 0x40af98
jmp 0x40aa59
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 0x40a73c
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 0x40b6df
mov edx, dword [esp + esi*4 + 0x128]
cmp edx, 1
adc edx, 0
cmp esi, 1
je 0x40981c
jmp 0x40980e
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 0x40b0e3
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x40b0af
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b0e3
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40b0d0
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 0x40b0e3
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 0x40b0e3
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x40b050
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 0x40b07e
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 0x40b135
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 0x40b108
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
cmp ebx, eax
jae 0x40b45f
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 0x40b459
cmp edx, 0x1f
ja 0x40b45f
movzx eax, byte [eax + 2]
add edx, eax
cmp edx, 0x20
jbe 0x40b45f
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409188
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 0x4089a2
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 0x409d99
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memmove
jmp 0x4090d9
mov edi, 0xffffffba
jmp 0x408a15
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov dword [esp], ebx
call fcn.00405120
cmp eax, 0xffffff88
ja 0x409188
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 0x4089a2
call fcn.00404140
cmp eax, 0xffffff88
ja 0x409188
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 0x4089a2
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 0x40a730
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40b03a
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 0x408e14
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 0x40b622
mov ecx, dword [esp + ebx*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp ebx, 1
jne 0x40b630
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x12c], ebx
jmp 0x40a760
mov edi, dword [esp + 0x54]
jmp 0x408a15
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 0x409cae
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 0x40b360
mov edi, dword [esp + 0x5c]
jmp 0x409cae
mov edi, ebp
jmp 0x409bda
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 0x408ffc
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 0x40b400
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x50], edi
jmp 0x408ffc
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40af6d
movzx eax, byte [eax + 2]
add edx, eax
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409188
cmp edx, 0x20
jne 0x409188
jmp 0x40b18b
mov edi, dword [esp + 0xfc]
cmp byte [esp + 0x50], 0
mov eax, edi
je 0x408eb6
jmp 0x40a373
cmp edi, 7
ja 0x40b7e6
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 + 0x417b40]
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 0x409d99
mov eax, dword [esp + 0x50]
mov ecx, ebx
lea edx, [ebx + 8]
sub ecx, eax
lea esi, [eax + 8]
cmp ecx, 0xf
jg 0x40b901
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 0x40b4f9
jmp 0x409d99
mov esi, dword [esp + 0x3c]
cmp esi, 7
ja 0x40b7f5
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 + 0x417b40]
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 0x4090d9
mov ecx, ebx
lea esi, [eax + 8]
lea edx, [ebx + 8]
sub ecx, eax
cmp ecx, 0xf
jg 0x40b8a4
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 0x40b56b
jmp 0x4090d9
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 0x408e14
cmp edx, 0x20
ja 0x40b5e7
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x409188
cmp dword [esp + 0x108], eax
jne 0x409188
cmp edx, 0x20
jne 0x409188
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 0x40a10a
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 0x40b305
movzx esi, byte [eax]
mov dword [esp + 0x44], esi
cmp ebx, 2
je 0x40b661
cmp ebx, 3
jne 0x40b670
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 0x409188
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 0x409fca
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 0x408e05
mov eax, dword [esp + 0x54]
xor edx, edx
sub eax, 1
sete dl
add edx, eax
jmp 0x40980e
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 0x408bb3
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40b0e3
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409188
sub dword [esp + 0x40], 0x14
mov dword [esp + 0x54], 0xffffffec
jmp 0x4090e9
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 0x40b804
mov ecx, dword [esp + eax*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp eax, 1
jne 0x40b812
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x12c], eax
jmp 0x408e38
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b4d3
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b54d
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 0x40b7cb
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 0x40aa59
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 0x40b856
jmp 0x40aa59
mov edi, esi
jmp 0x408a15
mov edi, dword [esp + 0x40]
jmp 0x408a15
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 0x4090d9
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 0x40b8c3
jmp 0x4090d9
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 0x409d99
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 0x40b924
jmp 0x409d99
mov eax, dword [esp + 0x3c]
jmp 0x40b734