Function at 0x4085a0
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 0x408920
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 0x409098
mov eax, dword [esp + 0x160]
movzx eax, byte [eax]
mov ecx, eax
and ecx, 3
cmp cl, 2
je 0x408717
cmp cl, 3
je 0x408700
cmp cl, 1
je 0x408938
mov edx, eax
shr dl, 2
and edx, 3
cmp dl, 1
je 0x409e30
cmp dl, 3
jne 0x4090d0
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 0x409430
cmp dword [esp + 0x164], esi
jb 0x409098
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 0x4089cb
test ebx, ebx
je 0x4086ed
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4089cb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x4086ed
jmp 0x4089cb
mov esi, dword [esp + 0x34]
mov edi, 0xffffffe2
mov ebx, dword [esi + 0x72f8]
test ebx, ebx
je 0x408925
cmp dword [esp + 0x164], 4
jbe 0x409098
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 0x4090b0
cmp al, 3
je 0x409080
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 0x409098
mov esi, dword [esp + 0x34]
mov edx, dword [esi + 0x7394]
test edx, edx
je 0x408797
cmp edi, 0x300
ja 0x4090f8
add eax, dword [esp + 0x160]
mov dword [esp + 0x40], eax
cmp cl, 3
je 0x409e58
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x409114
test edi, edi
je 0x409098
test ebx, ebx
je 0x409098
cmp ebx, edi
jae 0x40a430
mov eax, ebx
xor edx, edx
shl eax, 4
div edi
lea edx, [eax + eax*2]
shl edx, 3
mov esi, dword [edx + 0x416840]
mov ecx, dword [edx + 0x416844]
mov ebp, dword [edx + 0x416848]
mov eax, dword [edx + 0x41684c]
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 0x40a3d9
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 0x409098
cmp eax, ebx
jae 0x409098
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.00402c10
cmp eax, 0xffffff88
ja 0x409098
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 0x4089cb
test ebx, ebx
je 0x408903
mov edx, 8
mov dword [ecx + 4], 0
cmp edx, eax
jae 0x4089cb
mov dword [ecx + edx], esi
mov dword [ecx + edx + 4], esi
add edx, 8
cmp edx, eax
jb 0x408903
jmp 0x4089cb
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 0x409e00
cmp dl, 3
jne 0x4090e0
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 0x409098
cmp dword [esp + 0x164], 3
je 0x409098
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 0x408920
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 0x409190
cmp eax, 1
jne 0x408920
mov eax, dword [esp + 0x38]
xor edx, edx
test eax, eax
je 0x409fd9
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 0x4093b0
mov ebx, dword [esp + 0x34]
mov eax, 0x1000000
cmp eax, dword [ebx + 0x72c8]
sbb esi, dword [ebx + 0x72cc]
jb 0x409450
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 0x40ad1e
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 0x409098
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 0x40ad6f
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 0x409098
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409098
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 0x40a070
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 0x40a0a8
cmp byte [esp + 0xa2], 0
je 0x40a0a8
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 0x408d15
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b5c2
mov esi, dword [esp + 0x108]
cmp eax, esi
je 0x408d15
mov ecx, edx
mov ebx, eax
shr ecx, 3
sub ebx, ecx
mov dword [esp + 0x80], ecx
mov ecx, ebx
cmp ebx, esi
jae 0x408ceb
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 0x40b495
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 0x40a21a
movzx ebx, byte [esp + 0x50]
add eax, ebx
cmp eax, 0x13
jg 0x40a1bc
cmp byte [esp + 0x50], 0
jne 0x40a27c
cmp edx, 0x20
ja 0x40a242
mov ecx, dword [esp + 0x10c]
mov eax, dword [esp + 0x104]
cmp eax, ecx
jae 0x40a307
mov ebx, dword [esp + 0x108]
cmp ebx, eax
je 0x40a242
mov ecx, edx
mov edi, eax
shr ecx, 3
sub edi, ecx
cmp edi, ebx
jae 0x408db1
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 + 0x4169e0]
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 + 0x4169e0]
and ecx, ebp
add ebx, ecx
mov dword [esp + 0x120], ebx
cmp edx, 0x20
ja 0x408e64
mov ecx, dword [esp + 0x104]
cmp ecx, dword [esp + 0x10c]
jae 0x40a2e8
mov ebx, dword [esp + 0x108]
cmp ecx, ebx
je 0x408e64
mov eax, edx
mov edi, ecx
shr eax, 3
sub edi, eax
cmp edi, ebx
jae 0x408e4f
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 + 0x4169e0]
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 0x40ac59
cmp dword [esp + 0x70], ebp
jb 0x40ac59
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, esi
add edx, 0x20
cmp ecx, edx
jb 0x40ac59
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 0x40b2b9
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 0x408f77
mov esi, dword [esp + 0x74]
mov edx, ebx
sub edx, esi
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x40b681
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 0x40b0db
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 0x40b423
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 0x408fe9
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 0x408fb0
mov dword [esp + 0x40], ebp
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409047
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40a2c2
mov ebx, dword [esp + 0x108]
cmp eax, ebx
je 0x409047
mov ecx, edx
mov esi, eax
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40902b
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 0x40b230
sub dword [esp + 0x44], 1
je 0x40b4c8
mov eax, dword [esp + 0x128]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x6c], eax
jmp 0x408bd0
mov edi, edx
movzx eax, byte [esi + 4]
and edi, 0x3ffff
cmp edi, 0x20000
jbe 0x409173
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 0x408769
shr al, 3
movzx ebx, al
mov eax, 1
jmp 0x408648
shr al, 3
mov dword [esp + 0x50], 2
mov edx, 1
movzx ebx, al
jmp 0x408997
mov edx, dword [esi + 0xc]
lea esi, [edx + 0x4040]
add edx, 0x40
lea esi, [esi]
sub edx, 0xffffff80
cmp esi, edx
jne 0x409108
jmp 0x408797
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 0x409098
cmp eax, ebx
jae 0x409098
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.00404e10
cmp eax, 0xffffff88
jbe 0x40888a
jmp 0x409098
shl eax, 0xa
shr ebx, 0x16
mov dword [esp + 0x44], 0
add ebx, eax
mov eax, 5
jmp 0x408769
mov eax, dword [esp + 0x160]
add eax, dword [esp + 0x164]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
cmp eax, 0x7f
jle 0x4091db
cmp eax, 0xff
je 0x40a29f
mov edi, dword [esp + 0x58]
cmp dword [esp + 0x40], edi
jae 0x408920
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 0x408920
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], 0x416620
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], 0x416ac0
sub edx, edi
mov dword [esp + 0x10], 0x416b60
mov dword [esp + 0xc], edx
mov edx, ebp
mov dword [esp + 8], edi
mov dword [esp + 4], 9
mov dword [esp], 0x23
call fcn.004082d0
cmp eax, 0xffffff88
ja 0x409098
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], 0x416500
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x14], 0x416dc0
sub edi, ebp
mov dword [esp + 0x10], 0x416e40
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], 8
mov dword [esp], 0x1f
call fcn.004082d0
cmp eax, 0xffffff88
ja 0x409098
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], 0x4162e0
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x14], 0x416c00
sub edi, ebp
mov dword [esp + 0x10], 0x416ce0
mov dword [esp + 0xc], edi
mov edi, ebp
mov dword [esp + 8], ebp
mov dword [esp + 4], 9
mov dword [esp], 0x34
call fcn.004082d0
cmp eax, 0xffffff88
ja 0x409098
add edi, eax
mov dword [esp + 0x40], edi
sub edi, ebx
cmp edi, 0xffffff88
ja 0x408925
mov eax, dword [esp + 0x38]
test eax, eax
je 0x409fc8
mov edx, dword [esp + 0x54]
mov dword [esp + 0x54], edi
sub edx, edi
jmp 0x408a24
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 0x40a048
cmp dword [esp + 0x3c], ebx
jb 0x40b0f0
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 0x408925
mov esi, dword [esp + 0x34]
add eax, dword [esp + 0x160]
mov dword [esi + 0x7368], eax
mov dword [esi + 0x7378], ebx
jmp 0x4089cb
cmp dword [esp + 0x44], 4
jle 0x408a63
mov ebx, dword [ebx + 8]
mov eax, 1
mov esi, dword [ebx + 4]
mov ecx, esi
shl eax, cl
test eax, eax
je 0x40b602
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 0x409488
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 0x40b876
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 0x409098
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 0x40a130
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 0x409098
bsr eax, eax
mov ecx, 8
sub ecx, eax
mov dword [esp + 0x100], ecx
cmp edx, 0xffffff88
ja 0x409098
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 0x409098
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 0x4098a4
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 0x409d40
add ebx, eax
neg eax
mov ecx, eax
mov eax, dword [esp + 0x7c]
shr edx, cl
add edx, eax
cmp ebx, 0x20
ja 0x40971e
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40a1a5
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x40971e
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a375
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 0x409a28
movzx edx, byte [esp + 0x58]
add eax, edx
cmp eax, 0x13
jg 0x4099e0
movzx eax, byte [esp + 0x58]
test al, al
jne 0x4099c0
cmp ebx, 0x20
ja 0x409d30
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x409a68
mov ecx, dword [esp + 0x40]
mov esi, ecx
cmp ebp, ecx
je 0x4097aa
mov eax, ebx
mov esi, ebp
shr eax, 3
sub esi, eax
cmp esi, ecx
jae 0x40979e
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 + 0x4169e0]
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 + 0x4169e0]
mov eax, edx
movzx edx, word [ebp]
add eax, edx
mov dword [esp + 0x120], eax
cmp ebx, 0x20
ja 0x40984a
mov eax, dword [esp + 0x4c]
cmp esi, eax
jae 0x409a80
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x40984a
mov eax, ebx
mov edx, esi
shr eax, 3
sub edx, eax
cmp edx, ecx
jae 0x409de8
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 + 0x4169e0]
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 0x409aa0
mov ecx, dword [esp + 0x4c]
cmp esi, ecx
jae 0x409a48
mov ecx, dword [esp + 0x40]
cmp esi, ecx
je 0x409df0
mov edx, ebx
mov ebp, esi
shr edx, 3
sub ebp, edx
cmp ebp, ecx
jae 0x4098cf
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 0x40a44c
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 0x4096b0
je 0x40aee8
mov esi, dword [esp + 0x48]
test esi, esi
jne 0x409742
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x128], eax
mov dword [esp + 0x54], eax
jmp 0x409742
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 0x409775
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 0x40976c
cmp ebx, 0x20
ja 0x409d28
mov eax, dword [esp + 0x4c]
cmp ebp, eax
jae 0x40999d
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x4099af
mov eax, ebx
mov ecx, ebp
shr eax, 3
sub ecx, eax
cmp ecx, esi
jae 0x40a37c
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 0x40975f
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 0x40974f
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 0x4098e1
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 0x4097aa
mov eax, ebx
and ebx, 7
shr eax, 3
sub esi, eax
mov edi, dword [esi]
mov byte [esp + 0x5c], 1
jmp 0x40984a
mov eax, dword [esp + 0x60]
cmp byte [esp + 0x5c], 0
mov dword [esp + 0x100], ebx
mov dword [esp + 0x13c], eax
je 0x409ac7
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x88], ebx
jg 0x409098
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x3c], ebx
jl 0x409098
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 0x409ccf
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 0x40a383
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x58], eax
jb 0x40a383
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x40]
sub eax, ebp
add esi, 0x20
cmp eax, esi
jb 0x40a383
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 0x40b239
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 0x409c34
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
cmp edx, edi
jb 0x409098
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 0x40b0c2
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 0x40b3a9
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 0x409ca9
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 0x409c70
mov eax, dword [esp + 0x40]
cmp eax, 0xffffff88
ja 0x40b7ab
add dword [esp + 0x3c], 1
add ebp, eax
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
jne 0x409b20
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 0x40b0f0
test edi, edi
je 0x409425
jmp 0x40940f
test dl, dl
jne 0x4099c0
mov esi, ebp
jmp 0x4097aa
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 0x409daf
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x40ad51
mov esi, dword [esp + 0x40]
cmp ebp, esi
je 0x409daf
mov edi, ebx
mov ecx, ebp
shr edi, 3
sub ecx, edi
cmp ecx, esi
jae 0x409d9a
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 0x40971e
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 0x40971e
mov esi, edx
jmp 0x40983e
mov ebp, ecx
mov edx, eax
jmp 0x4098e1
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 0x408997
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 0x408648
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 0x40a326
lea eax, [esi + 0x73e8]
mov dword [esp + 0x64], eax
test dl, dl
je 0x40b0fa
test ebx, ebx
je 0x409098
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ebx - 1]
cmp ebx, 3
jbe 0x40b553
lea esi, [eax + ebx - 4]
mov eax, dword [esi]
mov dword [esp + 0x44], eax
test dl, dl
je 0x409098
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 0x409f98
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40b19d
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40af23
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 0x40af36
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 0x40b671
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x409f00
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 0x409f37
mov ebp, dword [esp + 0x44]
mov edi, 0xffffffba
test ebp, ebp
jne 0x408925
test esi, esi
jne 0x40adfd
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 0x40b0f0
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40ad30
mov edi, dword [esp + 0x40]
jmp 0x409425
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 0x409515
je 0x40b6a3
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x408d48
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 0x408d48
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 0x408d24
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x40b1ad
mov ecx, dword [esp + 0x108]
cmp eax, ecx
je 0x408d24
mov ebx, edx
mov esi, eax
shr ebx, 3
sub esi, ebx
mov dword [esp + 0x78], ebx
mov ebx, esi
cmp esi, ecx
jae 0x40a104
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 0x408d24
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x104], ebx
movzx ecx, byte [ebx]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40a15f
cmp edx, 3
jne 0x40a173
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 0x409098
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 0x4095dd
mov eax, ebx
and ebx, 7
shr eax, 3
sub ebp, eax
mov edi, dword [ebp]
mov byte [esp + 0x5c], 1
jmp 0x40971e
cmp edx, 0x20
ja 0x40b390
mov edi, dword [esp + 0x104]
mov ecx, dword [esp + 0x10c]
cmp edi, ecx
jae 0x40a24e
mov eax, dword [esp + 0x108]
cmp edi, eax
je 0x40a271
mov ecx, edx
mov esi, edi
shr ecx, 3
sub esi, ecx
cmp esi, eax
jae 0x40a1f9
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 0x408d65
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 0x408d55
mov eax, dword [esp + 0xfc]
jmp 0x408dc6
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 0x408d87
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 0x408d70
lea eax, [ebx + 3]
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], eax
jb 0x408920
movzx eax, word [ebx + 1]
add eax, 0x7f00
mov dword [esp + 0x44], eax
jmp 0x4091db
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 0x409047
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 0x408e64
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 0x408dc6
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 0x40b13f
call fcn.00402c10
cmp eax, 0xffffff88
ja 0x409098
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 0x4088b2
mov ebp, ecx
jmp 0x409711
mov ebp, ecx
jmp 0x409a10
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.00408480
mov dword [esp + 0x40], eax
jmp 0x409ca9
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 0x409098
cmp eax, 0xffffff88
ja 0x409098
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.00403e30
cmp eax, 0xffffff88
jbe 0x40888a
jmp 0x409098
mov eax, 0x91
mov ebp, 0x763
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x58], 0x2d2
jmp 0x4087fa
mov esi, ebp
mov ebp, dword [esp + 0xac]
test dl, dl
je 0x40a462
mov dword [esp + 0x100], ebx
mov ebp, ebx
test al, al
je 0x40a471
mov eax, dword [esp + 0x60]
mov dword [esp + 0x13c], eax
cmp byte [esp + 0x5c], 0
je 0x40a486
mov dword [esp + 0x104], esi
mov dword [esp + 0xfc], edi
mov eax, ebp
cmp ebp, 0x20
ja 0x409ad8
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 0x40ab58
mov esi, dword [esp + 0x108]
mov edx, ecx
cmp ecx, esi
je 0x40a4ec
mov ebx, eax
shr ebx, 3
sub edx, ebx
cmp edx, esi
jae 0x40a4d0
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 0x40b2b2
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 0x40a9c0
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 0x40a9f0
cmp byte [esp + 0xa2], 0
je 0x40a9f0
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 0x40a640
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jae 0x40b173
mov esi, dword [esp + 0x108]
mov dword [esp + 0x6c], esi
cmp esi, edx
je 0x40a640
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 0x40a61c
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 0x40aec2
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 0x40aac0
movzx ebx, byte [esp + 0x54]
add esi, ebx
cmp esi, 0x13
jg 0x40aa60
cmp byte [esp + 0x54], 0
jne 0x40ab30
mov edx, dword [esp + 0x104]
cmp eax, 0x20
ja 0x40aaf0
mov esi, dword [esp + 0x50]
cmp edx, esi
jae 0x40aba0
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40aaf0
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a6d6
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 + 0x4169e0]
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 + 0x4169e0]
and ecx, edi
add edx, ecx
mov dword [esp + 0x120], edx
cmp eax, 0x20
ja 0x40a79f
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ab80
mov ebx, dword [esp + 0x108]
cmp edx, ebx
je 0x40a79f
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40a78a
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 + 0x4169e0]
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 0x40abc0
mov edi, dword [esp + 0x64]
cmp dword [esp + 0x84], edi
jb 0x40abc0
mov edi, dword [esp + 0x54]
sub eax, ebp
add edi, 0x20
cmp eax, edi
jb 0x40abc0
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 0x40acb5
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 0x40a8f5
mov eax, dword [esp + 0x9c]
mov edx, ebx
sub edx, eax
mov eax, dword [esp + 0x50]
cmp edx, eax
jb 0x409098
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 0x40ac1a
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 0x40ae3b
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 0x40a969
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 0x40a930
mov esi, dword [esp + 0x54]
cmp esi, 0xffffff88
ja 0x40b7a4
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 0x40a498
mov edi, ebp
jmp 0x409adc
je 0x40b1d3
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x40a670
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x128], edx
mov dword [esp + 0x4c], edx
jmp 0x40a670
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 0x40a64c
mov ebx, dword [esp + 0x50]
cmp edx, ebx
jae 0x40ac33
mov ebx, dword [esp + 0x108]
cmp ebx, edx
je 0x40a64c
mov ecx, eax
mov esi, edx
shr ecx, 3
sub esi, ecx
cmp esi, ebx
jae 0x40aa3c
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 0x40a64c
cmp eax, 0x20
ja 0x40ade4
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x50]
cmp ecx, esi
jae 0x40aafc
mov edx, dword [esp + 0x108]
cmp ecx, edx
je 0x40ab1f
mov esi, eax
mov edi, ecx
shr esi, 3
sub edi, esi
cmp edi, edx
jae 0x40aa9e
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 0x40a68d
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 0x40a67d
mov esi, dword [esp + 0xfc]
jmp 0x40a6eb
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 0x40a6a8
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 0x40a698
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 0x40a4ec
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 0x40a79f
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 0x40a6eb
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.00408480
mov dword [esp + 0x54], eax
jmp 0x40a969
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 0x40a969
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 0x40a64c
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.00408480
add ebx, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ebx
jmp 0x408fed
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 0x40a877
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 0x40ace0
jmp 0x40a877
cmp dword [esp + 0x3c], ebx
jb 0x40b0f0
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 0x40a03a
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 0x409daf
mov eax, dword [esp + 0x40]
mov dword [esp + 0x104], eax
movzx ecx, byte [eax]
mov dword [esp + 0xfc], ecx
cmp edx, 2
je 0x40ad9e
cmp edx, 3
jne 0x40adb2
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 0x409098
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 0x408b63
mov edx, dword [esp + 0xfc]
cmp byte [esp + 0x54], 0
mov esi, edx
je 0x40a6eb
jmp 0x40ab37
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 0x409d01
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
cmp edi, 7
ja 0x40b35a
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 + 0x416a60]
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 0x40a969
mov esi, dword [esp + 0x5c]
mov eax, ebx
lea edx, [ebx + 8]
sub eax, esi
lea ecx, [esi + 8]
cmp eax, 0xf
jg 0x40b732
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 0x40aea8
jmp 0x40a969
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 0x40a64c
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 0x40b5ef
mov edx, dword [esp + esi*4 + 0x128]
cmp edx, 1
adc edx, 0
cmp esi, 1
je 0x40972c
jmp 0x40971e
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 0x40aff3
mov eax, dword [esp + 0x6c]
neg eax
and eax, 0x1f
mov dword [esp + 0x5c], eax
jmp 0x40afbf
mov eax, dword [esp + 0x40]
cmp esi, eax
je 0x40aff3
mov ecx, edx
mov ebp, esi
shr ecx, 3
sub ebp, ecx
cmp ebp, eax
jb 0x40afe0
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 0x40aff3
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 0x40aff3
mov eax, dword [esp + 0x60]
cmp esi, eax
jb 0x40af60
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 0x40af8e
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 0x40b045
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 0x40b018
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
cmp ebx, eax
jae 0x40b36f
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 0x40b369
cmp edx, 0x1f
ja 0x40b36f
movzx eax, byte [eax + 2]
add edx, eax
cmp edx, 0x20
jbe 0x40b36f
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409098
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 0x4088b2
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 0x409ca9
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memmove
jmp 0x408fe9
mov edi, 0xffffffba
jmp 0x408925
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov edx, edi
mov dword [esp], ebx
call fcn.00404e10
cmp eax, 0xffffff88
ja 0x409098
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 0x4088b2
call fcn.00403e30
cmp eax, 0xffffff88
ja 0x409098
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 0x4088b2
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 0x40a640
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40af4a
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 0x408d24
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 0x40b532
mov ecx, dword [esp + ebx*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp ebx, 1
jne 0x40b540
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x12c], ebx
jmp 0x40a670
mov edi, dword [esp + 0x54]
jmp 0x408925
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 0x409bbe
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 0x40b270
mov edi, dword [esp + 0x5c]
jmp 0x409bbe
mov edi, ebp
jmp 0x409aea
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 0x408f0c
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 0x40b310
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x50], edi
jmp 0x408f0c
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40ae7d
movzx eax, byte [eax + 2]
add edx, eax
mov eax, dword [esp + 0x40]
cmp esi, eax
jne 0x409098
cmp edx, 0x20
jne 0x409098
jmp 0x40b09b
mov edi, dword [esp + 0xfc]
cmp byte [esp + 0x50], 0
mov eax, edi
je 0x408dc6
jmp 0x40a283
cmp edi, 7
ja 0x40b6f6
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 + 0x416a60]
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 0x409ca9
mov eax, dword [esp + 0x50]
mov ecx, ebx
lea edx, [ebx + 8]
sub ecx, eax
lea esi, [eax + 8]
cmp ecx, 0xf
jg 0x40b811
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 0x40b409
jmp 0x409ca9
mov esi, dword [esp + 0x3c]
cmp esi, 7
ja 0x40b705
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 + 0x416a60]
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 0x408fe9
mov ecx, ebx
lea esi, [eax + 8]
lea edx, [ebx + 8]
sub ecx, eax
cmp ecx, 0xf
jg 0x40b7b4
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 0x40b47b
jmp 0x408fe9
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 0x408d24
cmp edx, 0x20
ja 0x40b4f7
mov eax, dword [esp + 0x104]
cmp eax, dword [esp + 0x10c]
jae 0x409098
cmp dword [esp + 0x108], eax
jne 0x409098
cmp edx, 0x20
jne 0x409098
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 0x40a01a
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 0x40b215
movzx esi, byte [eax]
mov dword [esp + 0x44], esi
cmp ebx, 2
je 0x40b571
cmp ebx, 3
jne 0x40b580
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 0x409098
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 0x409eda
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 0x408d15
mov eax, dword [esp + 0x54]
xor edx, edx
sub eax, 1
sete dl
add edx, eax
jmp 0x40971e
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 0x408ac3
mov eax, dword [esp + 0x58]
sub eax, 2
mov dword [esp + 0x68], eax
jmp 0x40aff3
mov edx, dword [esp + 0x100]
cmp edx, 0x20
ja 0x409098
sub dword [esp + 0x40], 0x14
mov dword [esp + 0x54], 0xffffffec
jmp 0x408ff9
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 0x40b714
mov ecx, dword [esp + eax*4 + 0x128]
cmp ecx, 1
adc ecx, 0
cmp eax, 1
jne 0x40b722
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x128], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x12c], eax
jmp 0x408d48
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b3e3
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
jmp 0x40b45d
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 0x40b6db
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 0x40a969
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 0x40b766
jmp 0x40a969
mov edi, esi
jmp 0x408925
mov edi, dword [esp + 0x40]
jmp 0x408925
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 0x408fe9
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 0x40b7d3
jmp 0x408fe9
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 0x409ca9
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 0x40b834
jmp 0x409ca9
mov eax, dword [esp + 0x3c]
jmp 0x40b644