Function at 0x408490
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 0x408810
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 0x408f88
mov eax, dword [esp + 0x160]
movzx eax, byte [eax]
mov ecx, eax
and ecx, 3
cmp cl, 2
je 0x408607
cmp cl, 3
je 0x4085f0
cmp cl, 1
je 0x408828
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409d20
cmp dl, 3
jne 0x408fc0
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 0x409320
cmp dword [esp + 0x164], esi
jb 0x408f88
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 0x4088bb
test ebx, ebx
je 0x4085dd
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4088bb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4085dd
jmp 0x4088bb
mov esi, dword [esp + 0x34]
mov edi, 0xffffffe2
mov ebx, dword [esi + 0x72f8]
test ebx, ebx
je 0x408815
cmp dword [esp + 0x164], 4
jbe 0x408f88
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 0x408fa0
cmp al, 3
je 0x408f70
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 0x408f88
mov esi, dword [esp + 0x34]
mov edx, dword [esi + 0x7394]
test edx, edx
je 0x408687
cmp edi, 0x300
ja 0x408fe8
add eax, dword [esp + 0x160]
mov dword [esp + 0x40], eax
cmp cl, 3
je 0x409d48
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x409004
test edi, edi
je 0x408f88
test ebx, ebx
je 0x408f88
cmp ebx, edi
jae 0x40a320
mov eax, ebx
xor edx, edx
shl eax, 4
div edi
lea edx, [eax + eax*2]
shl edx, 3
mov esi, dword [edx + 0x4178e0]
mov ecx, dword [edx + 0x4178e4]
mov ebp, dword [edx + 0x4178e8]
mov eax, dword [edx + 0x4178ec]
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 0x40a2c9
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 0x408f88
cmp eax, ebx
jae 0x408f88
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 0x408f88
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 0x4088bb
test ebx, ebx
je 0x4087f3
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4088bb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4087f3
jmp 0x4088bb
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 0x409cf0
cmp dl, 3
jne 0x408fd0
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 0x408f88
cmp dword [esp + 0x164], 3
je 0x408f88
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 0x408810
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 0x409080
cmp eax, 1
jne 0x408810
mov eax, dword [esp + 0x38]
xor edx, edx
test eax, eax
je 0x409ec9
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 0x4092a0
mov ebx, dword [esp + 0x34]
mov eax, 0x1000000
cmp eax, dword [ebx + 0x72c8]
sbb esi, dword [ebx + 0x72cc]
jb 0x409340
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 0x40ac0e
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 0x408f88
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 0x40ac5f
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 0x408f88
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x408f88
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 0x409f60
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 0x409f98
cmp byte [esp + 0xa2], 0
je 0x409f98
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 0x408c05
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b4b2
mov esi, dword [esp + 0x108]
cmp eax, esi
je 0x408c05
mov ecx, edx
mov ebx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x80], ecx
mov ecx, ebx
cmp ebx, esi
jae 0x408bdb
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 0x40b385
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 0x40a10a
movzx ebx, byte [esp + 0x50]
add eax, ebx
cmp eax, 0x13
jg 0x40a0ac
cmp byte [esp + 0x50], 0
jne 0x40a16c
cmp edx, 0x20
ja 0x40a132
mov ecx, dword [esp + 0x10c]
mov eax, dword [esp + 0x104]
cmp eax, ecx
jae 0x40a1f7
mov ebx, dword [esp + 0x108]
cmp ebx, eax
je 0x40a132
mov ecx, edx
mov edi, eax
shr ecx, 3
sub edi, ecx
cmp edi, ebx
jae 0x408ca1
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 + 0x418e80]
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 + 0x418e80]
and ecx, ebp
add ebx, ecx
mov dword [esp + 0x120], ebx
cmp edx, 0x20
ja 0x408d54
mov ecx, dword [esp + 0x104]
cmp ecx, dword [esp + 0x10c]
jae 0x40a1d8
mov ebx, dword [esp + 0x108]
cmp ecx, ebx
je 0x408d54
mov eax, edx
mov edi, ecx
shr eax, 3
sub edi, eax
cmp edi, ebx
jae 0x408d3f
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 + 0x418e80]
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 0x40ab49
cmp dword [esp + 0x70], ebp
jb 0x40ab49
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, esi
add edx, 0x20
cmp ecx, edx
jb 0x40ab49
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 0x40b1a9
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 0x408e67
mov esi, dword [esp + 0x74]
mov edx, ebx
sub edx, esi
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x40b571
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 0x40afcb
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 0x40b313
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 0x408ed9
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 0x408ea0
mov dword [esp + 0x40], ebp
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x408f37
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40a1b2
mov ebx, dword [esp + 0x108]
cmp eax, ebx
je 0x408f37
mov ecx, edx
mov esi, eax
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x408f1b
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 0x40b120
sub dword [esp + 0x44], 1
je 0x40b3b8
mov eax, dword [esp + 0x128]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x6c], eax
jmp 0x408ac0
mov edi, edx
movzx eax, byte [esi + 4]
and edi, 0x3ffff
cmp edi, 0x20000
jbe 0x409063
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 0x408659
shr al, 3
movzx ebx, al
mov eax, 1
jmp 0x408538
shr al, 3
mov dword [esp + 0x50], 2
mov edx, 1
movzx ebx, al
jmp 0x408887
mov edx, dword [esi + 0xc]
lea esi, [edx + 0x4040]
add edx, 0x40
lea esi, [esi]
sub edx, 0xffffff80
cmp esi, edx
jne 0x408ff8
jmp 0x408687
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 0x408f88
cmp eax, ebx
jae 0x408f88
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 0x40877a
jmp 0x408f88
shl eax, 0xa
shr ebx, 0x16
mov dword [esp + 0x44], 0
add ebx, eax
mov eax, 5
jmp 0x408659
mov eax, dword [esp + 0x160]
add eax, dword [esp + 0x164]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
cmp eax, 0x7f
jle 0x4090cb
cmp eax, 0xff
je 0x40a18f
mov edi, dword [esp + 0x58]
cmp dword [esp + 0x40], edi
jae 0x408810
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 0x408810
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], 0x4176c0
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], 0x418f60
sub edx, edi
mov dword [esp + 0x10], 0x419000
mov dword [esp + 0xc], edx
mov edx, ebp
mov dword [esp + 8], edi
mov dword [esp + 4], 9
mov dword [esp], 0x23
call fcn.004081c0
cmp eax, 0xffffff88
ja 0x408f88
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], 0x4175a0
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x14], 0x419260
sub edi, ebp
mov dword [esp + 0x10], 0x4192e0
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], 8
mov dword [esp], 0x1f
call fcn.004081c0
cmp eax, 0xffffff88
ja 0x408f88
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], 0x417380
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x14], 0x4190a0
sub edi, ebp
mov dword [esp + 0x10], 0x419180
mov dword [esp + 0xc], edi
mov edi, ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], 9
mov dword [esp], 0x34
call fcn.004081c0
cmp eax, 0xffffff88
ja 0x408f88
add edi, eax
mov dword [esp + 0x40], edi
sub edi, ebx
cmp edi, 0xffffff88
ja 0x408815
mov eax, dword [esp + 0x38]
test eax, eax
je 0x409eb8
mov edx, dword [esp + 0x54]
mov dword [esp + 0x54], edi
sub edx, edi
jmp 0x408914
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 0x409f38
cmp dword [esp + 0x3c], ebx
jb 0x40afe0
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 0x408815
mov esi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esi + 0x7368], eax
mov dword [esi + 0x7378], ebx
jmp 0x4088bb
cmp dword [esp + 0x44], 4
jle 0x408953
mov ebx, dword [ebx + 8]
mov eax, 1
mov esi, dword [ebx + 4]
mov ecx, esi
shl eax, cl
test eax, eax
je 0x40b4f2
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 0x409378
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 0x40b766
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 0x408f88
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 0x40a020
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 0x408f88
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x408f88
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 0x408f88
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 0x409794
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 0x409c30
add ebx, eax
neg eax
mov ecx, eax
mov eax, dword [esp + 0x7c]
shr edx, cl
add edx, eax
cmp ebx, 0x20
ja 0x40960e
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40a095
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40960e
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a265
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 0x409918
movzx edx, byte [esp + 0x58]
add eax, edx
cmp eax, 0x13
jg 0x4098d0
movzx eax, byte [esp + 0x58]
test al, al
jne 0x4098b0
cmp ebx, 0x20
ja 0x409c20
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409958
mov ecx, dword [esp + 0x40]
mov esi, ecx
cmp ebp, ecx
je 0x40969a
mov eax, ebx
mov esi, ebp
shr eax, 3
sub esi, eax
cmp esi, ecx
jae 0x40968e
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 + 0x418e80]
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 + 0x418e80]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x120], eax
cmp ebx, 0x20
ja 0x40973a
mov eax, dword [esp + 0x4c]
cmp esi, eax
jae 0x409970
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x40973a
mov eax, ebx
mov edx, esi
shr eax, 3
sub edx, eax
cmp edx, ecx
jae 0x409cd8
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 + 0x418e80]
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 0x409990
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x409938
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x409ce0
mov edx, ebx
mov ebp, esi
shr edx, 3
sub ebp, edx
cmp ebp, ecx
jae 0x4097bf
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 0x40a33c
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 0x4095a0
je 0x40add8
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x409632
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x128], eax
mov dword [esp + 0x54], eax
jmp 0x409632
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 0x409665
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 0x40965c
cmp ebx, 0x20
ja 0x409c18
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40988d
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40989f
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a26c
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 0x40964f
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 0x40963f
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 0x4097d1
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 0x40969a
mov eax, ebx
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40973a
mov eax, dword [esp + 0x60]
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x100], ebx
mov dword [esp + 0x13c], eax
je 0x4099b7
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ebx
jg 0x408f88
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ebx
jl 0x408f88
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 0x409bbf
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 0x40a273
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x58], eax
jb 0x40a273
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x40]
sub eax, ebp
add esi, 0x20
cmp eax, esi
jb 0x40a273
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 0x40b129
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 0x409b24
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
cmp edx, edi
jb 0x408f88
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 0x40afb2
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 0x40b299
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 0x409b99
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 0x409b60
mov eax, dword [esp + 0x40]
cmp eax, 0xffffff88
ja 0x40b69b
add dword [esp + 0x3c], 1
add ebp, eax
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
jne 0x409a10
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 0x40afe0
test edi, edi
je 0x409315
jmp 0x4092ff
test dl, dl
jne 0x4098b0
mov esi, ebp
jmp 0x40969a
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 0x409c9f
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x40ac41
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409c9f
mov edi, ebx
mov ecx, ebp
shr edi, 3
sub ecx, edi
cmp ecx, esi
jae 0x409c8a
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 0x40960e
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 0x40960e
mov esi, edx
jmp 0x40972e
mov ebp, ecx
mov edx, eax
jmp 0x4097d1
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 0x408887
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 0x408538
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 0x40a216
lea eax, [esi + 0x73e8]
mov dword [esp + 0x64], eax
test dl, dl
je 0x40afea
test ebx, ebx
je 0x408f88
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ebx - 1]
cmp ebx, 3
jbe 0x40b443
lea esi, [eax + ebx - 4]
mov eax, dword [esi]
mov dword [esp + 0x44], eax
test dl, dl
je 0x408f88
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 0x409e88
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b08d
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40ae13
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 0x40ae26
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 0x40b561
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x409df0
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 0x409e27
mov ebp, dword [esp + 0x44]
mov edi, 0xffffffba
test ebp, ebp
jne 0x408815
test esi, esi
jne 0x40aced
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 0x40afe0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40ac20
mov edi, dword [esp + 0x40]
jmp 0x409315
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 0x409405
je 0x40b593
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x408c38
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 0x408c38
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 0x408c14
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b09d
mov ecx, dword [esp + 0x108]
cmp eax, ecx
je 0x408c14
mov ebx, edx
mov esi, eax
shr ebx, 3
sub esi, ebx
mov dword [esp + 0x78], ebx
mov ebx, esi
cmp esi, ecx
jae 0x409ff4
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 0x408c14
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x104], ebx
movzx ecx, byte [ebx]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40a04f
cmp edx, 3
jne 0x40a063
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 0x408f88
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 0x4094cd
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
jmp 0x40960e
cmp edx, 0x20
ja 0x40b280
mov edi, dword [esp + 0x104]
mov ecx, dword [esp + 0x10c]
cmp edi, ecx
jae 0x40a13e
mov eax, dword [esp + 0x108]
cmp edi, eax
je 0x40a161
mov ecx, edx
mov esi, edi
shr ecx, 3
sub esi, ecx
cmp esi, eax
jae 0x40a0e9
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 0x408c55
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 0x408c45
mov eax, dword [esp + 0xfc]
jmp 0x408cb6
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 0x408c77
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 0x408c60
lea eax, [ebx + 3]
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], eax
jb 0x408810
movzx eax, word [ebx + 1]
add eax, 0x7f00
mov dword [esp + 0x44], eax
jmp 0x4090cb
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 0x408f37
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 0x408d54
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 0x408cb6
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 0x40b02f
call fcn.00402f20
cmp eax, 0xffffff88
ja 0x408f88
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 0x4087a2
mov ebp, ecx
jmp 0x409601
mov ebp, ecx
jmp 0x409900
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.00408370
mov dword [esp + 0x40], eax
jmp 0x409b99
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 0x408f88
cmp eax, 0xffffff88
ja 0x408f88
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 0x40877a
jmp 0x408f88
mov eax, 0x91
mov ebp, 0x763
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x58], 0x2d2
jmp 0x4086ea
mov esi, ebp
mov ebp, dword [esp + 0xac]
test dl, dl
je 0x40a352
mov dword [esp + 0x100], ebx
mov ebp, ebx
test al, al
je 0x40a361
mov eax, dword [esp + 0x60]
mov dword [esp + 0x13c], eax
cmp byte [esp + 0x5c], 0
je 0x40a376
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov eax, ebp
cmp ebp, 0x20
ja 0x4099c8
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 0x40aa48
mov esi, dword [esp + 0x108]
mov edx, ecx
cmp ecx, esi
je 0x40a3dc
mov ebx, eax
shr ebx, 3
sub edx, ebx
cmp edx, esi
jae 0x40a3c0
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 0x40b1a2
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 0x40a8b0
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 0x40a8e0
cmp byte [esp + 0xa2], 0
je 0x40a8e0
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 0x40a530
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jae 0x40b063
mov esi, dword [esp + 0x108]
mov dword [esp + 0x6c], esi
cmp esi, edx
je 0x40a530
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 0x40a50c
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 0x40adb2
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 0x40a9b0
movzx ebx, byte [esp + 0x54]
add esi, ebx
cmp esi, 0x13
jg 0x40a950
cmp byte [esp + 0x54], 0
jne 0x40aa20
mov edx, dword [esp + 0x104]
cmp eax, 0x20
ja 0x40a9e0
mov esi, dword [esp + 0x50]
cmp edx, esi
jae 0x40aa90
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a9e0
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a5c6
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 + 0x418e80]
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 + 0x418e80]
and ecx, edi
add edx, ecx
mov dword [esp + 0x120], edx
cmp eax, 0x20
ja 0x40a68f
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40aa70
mov ebx, dword [esp + 0x108]
cmp edx, ebx
je 0x40a68f
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a67a
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 + 0x418e80]
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 0x40aab0
mov edi, dword [esp + 0x64]
cmp dword [esp + 0x84], edi
jb 0x40aab0
mov edi, dword [esp + 0x54]
sub eax, ebp
add edi, 0x20
cmp eax, edi
jb 0x40aab0
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 0x40aba5
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 0x40a7e5
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jb 0x408f88
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 0x40ab0a
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 0x40ad2b
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 0x40a859
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 0x40a820
mov esi, dword [esp + 0x54]
cmp esi, 0xffffff88
ja 0x40b694
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 0x40a388
mov edi, ebp
jmp 0x4099cc
je 0x40b0c3
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x40a560
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x128], edx
mov dword [esp + 0x4c], edx
jmp 0x40a560
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 0x40a53c
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ab23
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a53c
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a92c
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 0x40a53c
cmp eax, 0x20
ja 0x40acd4
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jae 0x40a9ec
mov edx, dword [esp + 0x108]
cmp ecx, edx
je 0x40aa0f
mov esi, eax
mov edi, ecx
shr esi, 3
sub edi, esi
cmp edi, edx
jae 0x40a98e
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 0x40a57d
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 0x40a56d
mov esi, dword [esp + 0xfc]
jmp 0x40a5db
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 0x40a598
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 0x40a588
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 0x40a3dc
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 0x40a68f
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 0x40a5db
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.00408370
mov dword [esp + 0x54], eax
jmp 0x40a859
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 0x40a859
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 0x40a53c
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.00408370
add ebx, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ebx
jmp 0x408edd
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 0x40a767
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 0x40abd0
jmp 0x40a767
cmp dword [esp + 0x3c], ebx
jb 0x40afe0
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 0x409f2a
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 0x409c9f
mov eax, dword [esp + 0x40]
mov dword [esp + 0x104], eax
movzx ecx, byte [eax]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40ac8e
cmp edx, 3
jne 0x40aca2
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 0x408f88
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 0x408a53
mov edx, dword [esp + 0xfc]
cmp byte [esp + 0x54], 0
mov esi, edx
je 0x40a5db
jmp 0x40aa27
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 0x409bf1
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
cmp edi, 7
ja 0x40b24a
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 + 0x418f00]
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 0x40a859
mov esi, dword [esp + 0x5c]
mov eax, ebx
lea edx, [ebx + 8]
sub eax, esi
lea ecx, [esi + 8]
cmp eax, 0xf
jg 0x40b622
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 0x40ad98
jmp 0x40a859
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 0x40a53c
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 0x40b4df
mov edx, dword [esp + esi*4 + 0x128]
cmp edx, 1
adc edx, 0
cmp esi, 1
je 0x40961c
jmp 0x40960e
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 0x40aee3
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x40aeaf
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40aee3
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40aed0
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 0x40aee3
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 0x40aee3
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x40ae50
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 0x40ae7e
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 0x40af35
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 0x40af08
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
cmp ebx, eax
jae 0x40b25f
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 0x40b259
cmp edx, 0x1f
ja 0x40b25f
movzx eax, byte [eax + 2]
add edx, eax
cmp edx, 0x20
jbe 0x40b25f
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x408f88
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 0x4087a2
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 0x409b99
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memmove
jmp 0x408ed9
mov edi, 0xffffffba
jmp 0x408815
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov dword [esp], ebx
call fcn.00405120
cmp eax, 0xffffff88
ja 0x408f88
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 0x4087a2
call fcn.00404140
cmp eax, 0xffffff88
ja 0x408f88
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 0x4087a2
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 0x40a530
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40ae3a
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 0x408c14
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 0x40b422
mov ecx, dword [esp + ebx*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp ebx, 1
jne 0x40b430
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x12c], ebx
jmp 0x40a560
mov edi, dword [esp + 0x54]
jmp 0x408815
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 0x409aae
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 0x40b160
mov edi, dword [esp + 0x5c]
jmp 0x409aae
mov edi, ebp
jmp 0x4099da
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 0x408dfc
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 0x40b200
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x50], edi
jmp 0x408dfc
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40ad6d
movzx eax, byte [eax + 2]
add edx, eax
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x408f88
cmp edx, 0x20
jne 0x408f88
jmp 0x40af8b
mov edi, dword [esp + 0xfc]
cmp byte [esp + 0x50], 0
mov eax, edi
je 0x408cb6
jmp 0x40a173
cmp edi, 7
ja 0x40b5e6
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 + 0x418f00]
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 0x409b99
mov eax, dword [esp + 0x50]
mov ecx, ebx
lea edx, [ebx + 8]
sub ecx, eax
lea esi, [eax + 8]
cmp ecx, 0xf
jg 0x40b701
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 0x40b2f9
jmp 0x409b99
mov esi, dword [esp + 0x3c]
cmp esi, 7
ja 0x40b5f5
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 + 0x418f00]
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 0x408ed9
mov ecx, ebx
lea esi, [eax + 8]
lea edx, [ebx + 8]
sub ecx, eax
cmp ecx, 0xf
jg 0x40b6a4
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 0x40b36b
jmp 0x408ed9
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 0x408c14
cmp edx, 0x20
ja 0x40b3e7
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x408f88
cmp dword [esp + 0x108], eax
jne 0x408f88
cmp edx, 0x20
jne 0x408f88
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 0x409f0a
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 0x40b105
movzx esi, byte [eax]
mov dword [esp + 0x44], esi
cmp ebx, 2
je 0x40b461
cmp ebx, 3
jne 0x40b470
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 0x408f88
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 0x409dca
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 0x408c05
mov eax, dword [esp + 0x54]
xor edx, edx
sub eax, 1
sete dl
add edx, eax
jmp 0x40960e
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 0x4089b3
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40aee3
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x408f88
sub dword [esp + 0x40], 0x14
mov dword [esp + 0x54], 0xffffffec
jmp 0x408ee9
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 0x40b604
mov ecx, dword [esp + eax*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp eax, 1
jne 0x40b612
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x12c], eax
jmp 0x408c38
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b2d3
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b34d
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 0x40b5cb
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 0x40a859
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 0x40b656
jmp 0x40a859
mov edi, esi
jmp 0x408815
mov edi, dword [esp + 0x40]
jmp 0x408815
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 0x408ed9
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 0x40b6c3
jmp 0x408ed9
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 0x409b99
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 0x40b724
jmp 0x409b99
mov eax, dword [esp + 0x3c]
jmp 0x40b534