Function at 0x408590
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 0x408910
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 0x409088
mov eax, dword [esp + 0x160]
movzx eax, byte [eax]
mov ecx, eax
and ecx, 3
cmp cl, 2
je 0x408707
cmp cl, 3
je 0x4086f0
cmp cl, 1
je 0x408928
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409e20
cmp dl, 3
jne 0x4090c0
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 0x409420
cmp dword [esp + 0x164], esi
jb 0x409088
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 0x4089bb
test ebx, ebx
je 0x4086dd
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4089bb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4086dd
jmp 0x4089bb
mov esi, dword [esp + 0x34]
mov edi, 0xffffffe2
mov ebx, dword [esi + 0x72f8]
test ebx, ebx
je 0x408915
cmp dword [esp + 0x164], 4
jbe 0x409088
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 0x4090a0
cmp al, 3
je 0x409070
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 0x409088
mov esi, dword [esp + 0x34]
mov edx, dword [esi + 0x7394]
test edx, edx
je 0x408787
cmp edi, 0x300
ja 0x4090e8
add eax, dword [esp + 0x160]
mov dword [esp + 0x40], eax
cmp cl, 3
je 0x409e48
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x409104
test edi, edi
je 0x409088
test ebx, ebx
je 0x409088
cmp ebx, edi
jae 0x40a420
mov eax, ebx
xor edx, edx
shl eax, 4
div edi
lea edx, [eax + eax*2]
shl edx, 3
mov esi, dword [edx + 0x417860]
mov ecx, dword [edx + 0x417864]
mov ebp, dword [edx + 0x417868]
mov eax, dword [edx + 0x41786c]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x34]
lea edx, [esi + 0x6aac]
mov dword [esp + 0x54], edx
lea edx, [esi + 0x73e8]
add esi, 0x2828
mov dword [esp + 0x44], edx
mov edx, edi
shr edx, 8
imul eax, edx
imul edx, ecx
mov ecx, dword [esp + 0x58]
add eax, ebp
mov ebp, eax
add edx, ecx
shr ebp, 3
add eax, ebp
cmp eax, edx
jae 0x40a3c9
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 0x409088
cmp eax, ebx
jae 0x409088
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 0x409088
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 0x4089bb
test ebx, ebx
je 0x4088f3
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4089bb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4088f3
jmp 0x4089bb
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 0x409df0
cmp dl, 3
jne 0x4090d0
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 0x409088
cmp dword [esp + 0x164], 3
je 0x409088
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 0x408910
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 0x409180
cmp eax, 1
jne 0x408910
mov eax, dword [esp + 0x38]
xor edx, edx
test eax, eax
je 0x409fc9
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 0x4093a0
mov ebx, dword [esp + 0x34]
mov eax, 0x1000000
cmp eax, dword [ebx + 0x72c8]
sbb esi, dword [ebx + 0x72cc]
jb 0x409440
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 0x40ad0e
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 0x409088
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 0x40ad5f
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 0x409088
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409088
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 0x40a060
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 0x40a098
cmp byte [esp + 0xa2], 0
je 0x40a098
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 0x408d05
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b5b2
mov esi, dword [esp + 0x108]
cmp eax, esi
je 0x408d05
mov ecx, edx
mov ebx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x80], ecx
mov ecx, ebx
cmp ebx, esi
jae 0x408cdb
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 0x40b485
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 0x40a20a
movzx ebx, byte [esp + 0x50]
add eax, ebx
cmp eax, 0x13
jg 0x40a1ac
cmp byte [esp + 0x50], 0
jne 0x40a26c
cmp edx, 0x20
ja 0x40a232
mov ecx, dword [esp + 0x10c]
mov eax, dword [esp + 0x104]
cmp eax, ecx
jae 0x40a2f7
mov ebx, dword [esp + 0x108]
cmp ebx, eax
je 0x40a232
mov ecx, edx
mov edi, eax
shr ecx, 3
sub edi, ecx
cmp edi, ebx
jae 0x408da1
sub eax, ebx
mov edi, ebx
mov ecx, eax
mov eax, dword [edi]
mov dword [esp + 0x104], edi
shl ecx, 3
sub edx, ecx
mov dword [esp + 0xfc], eax
movzx ebx, byte [ebp + 3]
mov edi, eax
add edx, ebx
mov ecx, edx
neg ecx
shr edi, cl
mov ecx, dword [ebx*4 + 0x417a00]
movzx ebx, word [ebp]
mov ebp, eax
and ecx, edi
mov edi, dword [esp + 0x64]
add ecx, ebx
mov dword [esp + 0x110], ecx
movzx ebx, word [edi]
movzx edi, byte [edi + 3]
add edx, edi
mov ecx, edx
mov dword [esp + 0x100], edx
neg ecx
shr ebp, cl
mov ecx, dword [edi*4 + 0x417a00]
and ecx, ebp
add ebx, ecx
mov dword [esp + 0x120], ebx
cmp edx, 0x20
ja 0x408e54
mov ecx, dword [esp + 0x104]
cmp ecx, dword [esp + 0x10c]
jae 0x40a2d8
mov ebx, dword [esp + 0x108]
cmp ecx, ebx
je 0x408e54
mov eax, edx
mov edi, ecx
shr eax, 3
sub edi, eax
cmp edi, ebx
jae 0x408e3f
mov eax, ecx
mov edi, ebx
sub eax, ebx
shl eax, 3
mov dword [esp + 0x104], edi
sub edx, eax
mov eax, dword [edi]
mov dword [esp + 0xfc], eax
mov edi, dword [esp + 0x68]
movzx ebx, word [edi]
movzx edi, byte [edi + 3]
add edx, edi
mov ecx, edx
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x40]
neg ecx
shr eax, cl
and eax, dword [edi*4 + 0x417a00]
mov edi, dword [esp + 0x4c]
add ebx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x118], ebx
add edi, eax
lea ebx, [edx + eax]
mov dword [esp + 0x54], edi
mov esi, edi
lea ebp, [edx + edi]
mov edi, dword [esp + 0x6c]
mov ecx, ebx
add eax, edi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x50]
cmp dword [esp + 0x5c], ecx
jb 0x40ac49
cmp dword [esp + 0x70], ebp
jb 0x40ac49
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, esi
add edx, 0x20
cmp ecx, edx
jb 0x40ac49
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 0x40b2a9
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 0x408f67
mov esi, dword [esp + 0x74]
mov edx, ebx
sub edx, esi
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x40b671
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 0x40b0cb
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 0x40b413
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 0x408fd9
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 0x408fa0
mov dword [esp + 0x40], ebp
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409037
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40a2b2
mov ebx, dword [esp + 0x108]
cmp eax, ebx
je 0x409037
mov ecx, edx
mov esi, eax
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40901b
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 0x40b220
sub dword [esp + 0x44], 1
je 0x40b4b8
mov eax, dword [esp + 0x128]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x6c], eax
jmp 0x408bc0
mov edi, edx
movzx eax, byte [esi + 4]
and edi, 0x3ffff
cmp edi, 0x20000
jbe 0x409163
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 0x408759
shr al, 3
movzx ebx, al
mov eax, 1
jmp 0x408638
shr al, 3
mov dword [esp + 0x50], 2
mov edx, 1
movzx ebx, al
jmp 0x408987
mov edx, dword [esi + 0xc]
lea esi, [edx + 0x4040]
add edx, 0x40
lea esi, [esi]
sub edx, 0xffffff80
cmp esi, edx
jne 0x4090f8
jmp 0x408787
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 0x409088
cmp eax, ebx
jae 0x409088
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 0x40887a
jmp 0x409088
shl eax, 0xa
shr ebx, 0x16
mov dword [esp + 0x44], 0
add ebx, eax
mov eax, 5
jmp 0x408759
mov eax, dword [esp + 0x160]
add eax, dword [esp + 0x164]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
cmp eax, 0x7f
jle 0x4091cb
cmp eax, 0xff
je 0x40a28f
mov edi, dword [esp + 0x58]
cmp dword [esp + 0x40], edi
jae 0x408910
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 0x408910
mov ebp, dword [esp + 0x34]
movzx eax, byte [ecx]
mov dword [esp + 0x20], esi
lea edx, [ebp + 0x6aac]
mov ecx, eax
mov byte [esp + 0x40], al
lea eax, [ebp + 0x10]
mov dword [esp + 0x28], edx
shr cl, 6
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x44]
movzx ecx, cl
mov dword [esp + 0x24], edx
mov edx, dword [ebp + 0x72fc]
mov dword [esp + 0x18], 0x417640
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417ae0
sub edx, edi
mov dword [esp + 0x10], 0x417b80
mov dword [esp + 0xc], edx
mov edx, ebp
mov dword [esp + 8], edi
mov dword [esp + 4], 9
mov dword [esp], 0x23
call fcn.004082c0
cmp eax, 0xffffff88
ja 0x409088
add edi, eax
mov dword [esp + 0x34], ebp
lea edx, [ebp + 8]
lea eax, [ebp + 0x1018]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x5c]
movzx ecx, byte [esp + 0x40]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x44]
shr cl, 4
mov dword [esp + 0x24], edi
mov edi, dword [ebp + 0x7394]
and ecx, 3
mov dword [esp + 0x20], edi
mov edi, dword [ebp + 0x72fc]
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x18], 0x417520
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x14], 0x417de0
sub edi, ebp
mov dword [esp + 0x10], 0x417e60
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], 8
mov dword [esp], 0x1f
call fcn.004082c0
cmp eax, 0xffffff88
ja 0x409088
add ebp, eax
mov edi, dword [esp + 0x34]
movzx ecx, byte [esp + 0x40]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x5c]
lea edx, [edi + 4]
lea eax, [edi + 0x1820]
shr cl, 2
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x44]
and ecx, 3
mov dword [esp + 0x24], ebp
mov ebp, dword [edi + 0x7394]
mov dword [esp + 0x20], ebp
mov ebp, dword [edi + 0x72fc]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x18], 0x417300
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x14], 0x417c20
sub edi, ebp
mov dword [esp + 0x10], 0x417d00
mov dword [esp + 0xc], edi
mov edi, ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], 9
mov dword [esp], 0x34
call fcn.004082c0
cmp eax, 0xffffff88
ja 0x409088
add edi, eax
mov dword [esp + 0x40], edi
sub edi, ebx
cmp edi, 0xffffff88
ja 0x408915
mov eax, dword [esp + 0x38]
test eax, eax
je 0x409fb8
mov edx, dword [esp + 0x54]
mov dword [esp + 0x54], edi
sub edx, edi
jmp 0x408a14
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 0x40a038
cmp dword [esp + 0x3c], ebx
jb 0x40b0e0
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 0x408915
mov esi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esi + 0x7368], eax
mov dword [esi + 0x7378], ebx
jmp 0x4089bb
cmp dword [esp + 0x44], 4
jle 0x408a53
mov ebx, dword [ebx + 8]
mov eax, 1
mov esi, dword [ebx + 4]
mov ecx, esi
shl eax, cl
test eax, eax
je 0x40b5f2
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 0x409478
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 0x40b866
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 0x409088
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 0x40a120
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 0x409088
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409088
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 0x409088
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 0x409894
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 0x409d30
add ebx, eax
neg eax
mov ecx, eax
mov eax, dword [esp + 0x7c]
shr edx, cl
add edx, eax
cmp ebx, 0x20
ja 0x40970e
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40a195
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40970e
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a365
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 0x409a18
movzx edx, byte [esp + 0x58]
add eax, edx
cmp eax, 0x13
jg 0x4099d0
movzx eax, byte [esp + 0x58]
test al, al
jne 0x4099b0
cmp ebx, 0x20
ja 0x409d20
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409a58
mov ecx, dword [esp + 0x40]
mov esi, ecx
cmp ebp, ecx
je 0x40979a
mov eax, ebx
mov esi, ebp
shr eax, 3
sub esi, eax
cmp esi, ecx
jae 0x40978e
mov eax, ebp
mov esi, ecx
sub eax, ecx
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
shl eax, 3
sub ebx, eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x48]
mov edx, edi
mov ebp, dword [esp + 0x70]
add eax, ecx
mov ecx, dword [esp + 0x50]
add eax, ecx
mov dword [esp + 0x60], eax
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov eax, edx
movzx edx, word [ebp]
mov ebp, dword [esp + 0x74]
add eax, edx
mov edx, edi
mov dword [esp + 0x110], eax
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x120], eax
cmp ebx, 0x20
ja 0x40983a
mov eax, dword [esp + 0x4c]
cmp esi, eax
jae 0x409a70
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x40983a
mov eax, ebx
mov edx, esi
shr eax, 3
sub edx, eax
cmp edx, ecx
jae 0x409dd8
mov eax, esi
sub eax, ecx
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
shl eax, 3
sub ebx, eax
mov ebp, dword [esp + 0x78]
mov edx, edi
add dword [esp + 0x3c], 1
movzx eax, byte [ebp + 3]
add ebx, eax
mov ecx, ebx
neg ecx
shr edx, cl
and edx, dword [eax*4 + 0x417a00]
mov ecx, dword [esp + 0x48]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x6c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x50]
add eax, 0x10
mov dword [eax - 0xc], ecx
mov ecx, dword [esp + 0x54]
mov dword [eax - 8], ecx
mov dword [esp + 0x6c], eax
mov eax, 1
cmp ebx, 0x20
ja 0x409a90
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x409a38
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x409de0
mov edx, ebx
mov ebp, esi
shr edx, 3
sub ebp, edx
cmp ebp, ecx
jae 0x4098bf
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 0x40a43c
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 0x4096a0
je 0x40aed8
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x409732
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x128], eax
mov dword [esp + 0x54], eax
jmp 0x409732
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 0x409765
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 0x40975c
cmp ebx, 0x20
ja 0x409d18
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40998d
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40999f
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a36c
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 0x40974f
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 0x40973f
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 0x4098d1
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 0x40979a
mov eax, ebx
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40983a
mov eax, dword [esp + 0x60]
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x100], ebx
mov dword [esp + 0x13c], eax
je 0x409ab7
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ebx
jg 0x409088
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ebx
jl 0x409088
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 0x409cbf
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 0x40a373
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x58], eax
jb 0x40a373
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x40]
sub eax, ebp
add esi, 0x20
cmp eax, esi
jb 0x40a373
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 0x40b229
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 0x409c24
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
cmp edx, edi
jb 0x409088
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 0x40b0b2
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 0x40b399
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 0x409c99
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 0x409c60
mov eax, dword [esp + 0x40]
cmp eax, 0xffffff88
ja 0x40b79b
add dword [esp + 0x3c], 1
add ebp, eax
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
jne 0x409b10
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 0x40b0e0
test edi, edi
je 0x409415
jmp 0x4093ff
test dl, dl
jne 0x4099b0
mov esi, ebp
jmp 0x40979a
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 0x409d9f
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x40ad41
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409d9f
mov edi, ebx
mov ecx, ebp
shr edi, 3
sub ecx, edi
cmp ecx, esi
jae 0x409d8a
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 0x40970e
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 0x40970e
mov esi, edx
jmp 0x40982e
mov ebp, ecx
mov edx, eax
jmp 0x4098d1
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 0x408987
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 0x408638
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 0x40a316
lea eax, [esi + 0x73e8]
mov dword [esp + 0x64], eax
test dl, dl
je 0x40b0ea
test ebx, ebx
je 0x409088
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ebx - 1]
cmp ebx, 3
jbe 0x40b543
lea esi, [eax + ebx - 4]
mov eax, dword [esi]
mov dword [esp + 0x44], eax
test dl, dl
je 0x409088
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 0x409f88
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b18d
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40af13
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 0x40af26
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 0x40b661
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x409ef0
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 0x409f27
mov ebp, dword [esp + 0x44]
mov edi, 0xffffffba
test ebp, ebp
jne 0x408915
test esi, esi
jne 0x40aded
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 0x40b0e0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40ad20
mov edi, dword [esp + 0x40]
jmp 0x409415
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 0x409505
je 0x40b693
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x408d38
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 0x408d38
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 0x408d14
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b19d
mov ecx, dword [esp + 0x108]
cmp eax, ecx
je 0x408d14
mov ebx, edx
mov esi, eax
shr ebx, 3
sub esi, ebx
mov dword [esp + 0x78], ebx
mov ebx, esi
cmp esi, ecx
jae 0x40a0f4
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 0x408d14
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x104], ebx
movzx ecx, byte [ebx]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40a14f
cmp edx, 3
jne 0x40a163
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 0x409088
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 0x4095cd
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
jmp 0x40970e
cmp edx, 0x20
ja 0x40b380
mov edi, dword [esp + 0x104]
mov ecx, dword [esp + 0x10c]
cmp edi, ecx
jae 0x40a23e
mov eax, dword [esp + 0x108]
cmp edi, eax
je 0x40a261
mov ecx, edx
mov esi, edi
shr ecx, 3
sub esi, ecx
cmp esi, eax
jae 0x40a1e9
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 0x408d55
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 0x408d45
mov eax, dword [esp + 0xfc]
jmp 0x408db6
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 0x408d77
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 0x408d60
lea eax, [ebx + 3]
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], eax
jb 0x408910
movzx eax, word [ebx + 1]
add eax, 0x7f00
mov dword [esp + 0x44], eax
jmp 0x4091cb
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 0x409037
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 0x408e54
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 0x408db6
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 0x40b12f
call fcn.00402f20
cmp eax, 0xffffff88
ja 0x409088
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 0x4088a2
mov ebp, ecx
jmp 0x409701
mov ebp, ecx
jmp 0x409a00
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.00408470
mov dword [esp + 0x40], eax
jmp 0x409c99
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 0x409088
cmp eax, 0xffffff88
ja 0x409088
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 0x40887a
jmp 0x409088
mov eax, 0x91
mov ebp, 0x763
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x58], 0x2d2
jmp 0x4087ea
mov esi, ebp
mov ebp, dword [esp + 0xac]
test dl, dl
je 0x40a452
mov dword [esp + 0x100], ebx
mov ebp, ebx
test al, al
je 0x40a461
mov eax, dword [esp + 0x60]
mov dword [esp + 0x13c], eax
cmp byte [esp + 0x5c], 0
je 0x40a476
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov eax, ebp
cmp ebp, 0x20
ja 0x409ac8
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 0x40ab48
mov esi, dword [esp + 0x108]
mov edx, ecx
cmp ecx, esi
je 0x40a4dc
mov ebx, eax
shr ebx, 3
sub edx, ebx
cmp edx, esi
jae 0x40a4c0
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 0x40b2a2
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 0x40a9b0
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 0x40a9e0
cmp byte [esp + 0xa2], 0
je 0x40a9e0
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 0x40a630
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jae 0x40b163
mov esi, dword [esp + 0x108]
mov dword [esp + 0x6c], esi
cmp esi, edx
je 0x40a630
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 0x40a60c
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 0x40aeb2
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 0x40aab0
movzx ebx, byte [esp + 0x54]
add esi, ebx
cmp esi, 0x13
jg 0x40aa50
cmp byte [esp + 0x54], 0
jne 0x40ab20
mov edx, dword [esp + 0x104]
cmp eax, 0x20
ja 0x40aae0
mov esi, dword [esp + 0x50]
cmp edx, esi
jae 0x40ab90
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40aae0
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a6c6
mov ecx, edx
mov esi, ebx
sub ecx, ebx
mov dword [esp + 0x104], esi
mov esi, dword [esi]
shl ecx, 3
sub eax, ecx
mov dword [esp + 0xfc], esi
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x48]
lea edx, [edi + ebx]
mov edi, dword [esp + 0x5c]
add dword [esp + 0x13c], edx
mov ebx, esi
movzx edx, byte [edi + 3]
add eax, edx
mov ecx, eax
neg ecx
shr ebx, cl
mov ecx, dword [edx*4 + 0x417a00]
and ecx, ebx
mov edx, ecx
movzx ecx, word [edi]
mov edi, dword [esp + 0x60]
add edx, ecx
mov dword [esp + 0x110], edx
movzx ebx, byte [edi + 3]
movzx edx, word [edi]
mov edi, esi
add eax, ebx
mov ecx, eax
mov dword [esp + 0x100], eax
neg ecx
shr edi, cl
mov ecx, dword [ebx*4 + 0x417a00]
and ecx, edi
add edx, ecx
mov dword [esp + 0x120], edx
cmp eax, 0x20
ja 0x40a78f
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ab70
mov ebx, dword [esp + 0x108]
cmp edx, ebx
je 0x40a78f
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a77a
mov ecx, edx
mov esi, ebx
sub ecx, ebx
mov dword [esp + 0x104], esi
mov esi, dword [esi]
shl ecx, 3
sub eax, ecx
mov dword [esp + 0xfc], esi
mov edi, dword [esp + 0x64]
movzx ebx, byte [edi + 3]
movzx edx, word [edi]
add eax, ebx
mov ecx, eax
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x3c]
neg ecx
and eax, 3
shr esi, cl
and esi, dword [ebx*4 + 0x417a00]
mov dword [esp + 0x60], eax
shl eax, 4
add edx, esi
mov ecx, dword [esp + eax + 0xbc]
mov esi, dword [esp + eax + 0xc0]
mov dword [esp + 0x118], edx
mov edx, dword [esp + 0xb8]
mov edi, dword [esp + eax + 0xc4]
lea eax, [ecx + esi]
mov dword [esp + 0x58], esi
lea ebx, [ebp + ecx]
lea esi, [ebp + eax]
mov dword [esp + 0x54], eax
lea eax, [edx + ecx]
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x70], esi
mov edi, eax
sub edi, 0x20
cmp edi, esi
jb 0x40abb0
mov edi, dword [esp + 0x64]
cmp dword [esp + 0x84], edi
jb 0x40abb0
mov edi, dword [esp + 0x54]
sub eax, ebp
add edi, 0x20
cmp eax, edi
jb 0x40abb0
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 0x40aca5
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 0x40a8e5
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jb 0x409088
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 0x40ac0a
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 0x40ae2b
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 0x40a959
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 0x40a920
mov esi, dword [esp + 0x54]
cmp esi, 0xffffff88
ja 0x40b794
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 0x40a488
mov edi, ebp
jmp 0x409acc
je 0x40b1c3
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x40a660
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x128], edx
mov dword [esp + 0x4c], edx
jmp 0x40a660
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 0x40a63c
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ac23
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a63c
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40aa2c
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 0x40a63c
cmp eax, 0x20
ja 0x40add4
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jae 0x40aaec
mov edx, dword [esp + 0x108]
cmp ecx, edx
je 0x40ab0f
mov esi, eax
mov edi, ecx
shr esi, 3
sub edi, esi
cmp edi, edx
jae 0x40aa8e
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 0x40a67d
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 0x40a66d
mov esi, dword [esp + 0xfc]
jmp 0x40a6db
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 0x40a698
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 0x40a688
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 0x40a4dc
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 0x40a78f
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 0x40a6db
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.00408470
mov dword [esp + 0x54], eax
jmp 0x40a959
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 0x40a959
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 0x40a63c
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.00408470
add ebx, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ebx
jmp 0x408fdd
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 0x40a867
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 0x40acd0
jmp 0x40a867
cmp dword [esp + 0x3c], ebx
jb 0x40b0e0
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 0x40a02a
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 0x409d9f
mov eax, dword [esp + 0x40]
mov dword [esp + 0x104], eax
movzx ecx, byte [eax]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40ad8e
cmp edx, 3
jne 0x40ada2
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 0x409088
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 0x408b53
mov edx, dword [esp + 0xfc]
cmp byte [esp + 0x54], 0
mov esi, edx
je 0x40a6db
jmp 0x40ab27
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 0x409cf1
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
cmp edi, 7
ja 0x40b34a
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [edi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [edi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x58], 8
jbe 0x40a959
mov esi, dword [esp + 0x5c]
mov eax, ebx
lea edx, [ebx + 8]
sub eax, esi
lea ecx, [esi + 8]
cmp eax, 0xf
jg 0x40b722
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 0x40ae98
jmp 0x40a959
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 0x40a63c
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 0x40b5df
mov edx, dword [esp + esi*4 + 0x128]
cmp edx, 1
adc edx, 0
cmp esi, 1
je 0x40971c
jmp 0x40970e
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 0x40afe3
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x40afaf
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40afe3
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40afd0
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 0x40afe3
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 0x40afe3
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x40af50
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 0x40af7e
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 0x40b035
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 0x40b008
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
cmp ebx, eax
jae 0x40b35f
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 0x40b359
cmp edx, 0x1f
ja 0x40b35f
movzx eax, byte [eax + 2]
add edx, eax
cmp edx, 0x20
jbe 0x40b35f
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409088
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 0x4088a2
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 0x409c99
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memmove
jmp 0x408fd9
mov edi, 0xffffffba
jmp 0x408915
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov dword [esp], ebx
call fcn.00405120
cmp eax, 0xffffff88
ja 0x409088
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 0x4088a2
call fcn.00404140
cmp eax, 0xffffff88
ja 0x409088
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 0x4088a2
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 0x40a630
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40af3a
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 0x408d14
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 0x40b522
mov ecx, dword [esp + ebx*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp ebx, 1
jne 0x40b530
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x12c], ebx
jmp 0x40a660
mov edi, dword [esp + 0x54]
jmp 0x408915
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 0x409bae
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 0x40b260
mov edi, dword [esp + 0x5c]
jmp 0x409bae
mov edi, ebp
jmp 0x409ada
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 0x408efc
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 0x40b300
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x50], edi
jmp 0x408efc
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40ae6d
movzx eax, byte [eax + 2]
add edx, eax
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409088
cmp edx, 0x20
jne 0x409088
jmp 0x40b08b
mov edi, dword [esp + 0xfc]
cmp byte [esp + 0x50], 0
mov eax, edi
je 0x408db6
jmp 0x40a273
cmp edi, 7
ja 0x40b6e6
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [edi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [edi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x48], 8
jbe 0x409c99
mov eax, dword [esp + 0x50]
mov ecx, ebx
lea edx, [ebx + 8]
sub ecx, eax
lea esi, [eax + 8]
cmp ecx, 0xf
jg 0x40b801
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 0x40b3f9
jmp 0x409c99
mov esi, dword [esp + 0x3c]
cmp esi, 7
ja 0x40b6f5
movzx edx, byte [eax]
mov byte [ebx], dl
movzx edx, byte [eax + 1]
mov byte [ebx + 1], dl
movzx edx, byte [eax + 2]
mov byte [ebx + 2], dl
movzx edx, byte [eax + 3]
add eax, dword [esi*4 + 0x417a80]
mov byte [ebx + 3], dl
mov edx, dword [eax]
sub eax, dword [esi*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], edx
cmp dword [esp + 0x4c], 8
jbe 0x408fd9
mov ecx, ebx
lea esi, [eax + 8]
lea edx, [ebx + 8]
sub ecx, eax
cmp ecx, 0xf
jg 0x40b7a4
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 0x40b46b
jmp 0x408fd9
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 0x408d14
cmp edx, 0x20
ja 0x40b4e7
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x409088
cmp dword [esp + 0x108], eax
jne 0x409088
cmp edx, 0x20
jne 0x409088
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 0x40a00a
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 0x40b205
movzx esi, byte [eax]
mov dword [esp + 0x44], esi
cmp ebx, 2
je 0x40b561
cmp ebx, 3
jne 0x40b570
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 0x409088
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 0x409eca
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 0x408d05
mov eax, dword [esp + 0x54]
xor edx, edx
sub eax, 1
sete dl
add edx, eax
jmp 0x40970e
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 0x408ab3
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40afe3
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409088
sub dword [esp + 0x40], 0x14
mov dword [esp + 0x54], 0xffffffec
jmp 0x408fe9
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 0x40b704
mov ecx, dword [esp + eax*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp eax, 1
jne 0x40b712
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x12c], eax
jmp 0x408d38
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b3d3
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b44d
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 0x40b6cb
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 0x40a959
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 0x40b756
jmp 0x40a959
mov edi, esi
jmp 0x408915
mov edi, dword [esp + 0x40]
jmp 0x408915
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 0x408fd9
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 0x40b7c3
jmp 0x408fd9
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 0x409c99
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 0x40b824
jmp 0x409c99
mov eax, dword [esp + 0x3c]
jmp 0x40b634