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

Disassembly:
mov eax, 0x17f0
call fcn.00414f60
mov eax, dword [esp + 0x17f4]
push ebx
push ebp
push esi
test eax, eax
push edi
mov dword [esp + 0x14], 0
je 0x410bd7
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x410bd7
mov ecx, dword [esp + 0x1808]
test ecx, ecx
je 0x410bd7
mov ebx, dword [esp + 0x180c]
test ebx, ebx
je 0x410bd7
mov ebp, dword [ecx]
test ebp, ebp
je 0x410bd7
mov edi, dword [ecx + 4]
test edi, edi
jbe 0x410bd7
mov esi, dword [ebx]
test esi, esi
je 0x410bd7
mov ecx, dword [ebx + 4]
test ecx, ecx
jbe 0x410bd7
mov edx, dword [esp + 0x1810]
test edx, edx
je 0x40fbf8
cmp edx, dword [eax + 0xc]
jle 0x40fc02
mov edx, dword [eax + 0xc]
mov dword [esp + 0x1810], edx
cmp dword [eax + 8], edx
jg 0x410bb8
mov ebx, dword [eax + 0x74]
test ebx, ebx
jbe 0x40fc1b
cmp dword [eax + 0x58], edx
jg 0x410bb1
add edi, ebp
lea edx, [ecx + esi]
mov dword [esp + 0x44], edi
mov edi, dword [eax + 0x3c]
mov ecx, eax
mov dword [esp + 0x18], ebp
sub ecx, edi
mov edi, 1
sub ecx, 0x114
mov dword [esp + 0x28], eax
mov dword [esp + 0x5c], ecx
lea ecx, [esp + 0x80]
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + 0x64]
test ecx, ecx
mov dword [esp + 0x80], eax
mov dword [esp + 0x8c], edi
mov dword [esp + 0x90], 0
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], edx
jbe 0x40fc9e
cmp dword [eax + 0x68], 0xffffffff
mov dword [esp + 0x94], ecx
je 0x40fc97
mov dword [esp + 0xb4], ebp
add ebp, ecx
mov dword [esp + 0x18], ebp
jmp 0x40fcb5
mov ecx, dword [eax + 0x5c]
add ecx, ebp
jmp 0x40fcae
xor ecx, ecx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xb4], ecx
test ebx, ebx
mov dword [esp + 0xb0], ebp
mov dword [esp + 0xb8], edi
mov dword [esp + 0xa4], 0
jbe 0x40fd28
mov ecx, dword [eax + 0x70]
add ecx, esi
sub edx, ecx
cmp edx, ebx
jge 0x40fce7
mov dword [esp + 0x14], 0x82010407
jmp 0x40fd28
mov eax, ebx
sub eax, 2
je 0x40fd1d
sub eax, 2
je 0x40fd12
sub eax, 4
je 0x40fd03
mov dl, byte [esp + 0x1810]
mov byte [ecx], dl
jmp 0x40fd28
mov eax, dword [esp + 0x1810]
cdq
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x40fd28
mov eax, dword [esp + 0x1810]
mov dword [ecx], eax
jmp 0x40fd28
mov dx, word [esp + 0x1810]
mov word [ecx], dx
mov eax, dword [esp + 0x14]
test eax, 0x80000000
je 0x40fd54
mov edx, dword [esp + 0x180c]
xor ecx, ecx
pop edi
pop esi
mov dword [edx + 4], ecx
mov edx, dword [esp + 0x1800]
pop ebp
pop ebx
mov dword [edx + 4], ecx
add esp, 0x17f0
ret
xor eax, eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x84], eax
mov dword [esp + 0x1c], eax
mov esi, edi
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40ff50
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], 0
mov edi, dword [ecx + 0x14]
test edi, edi
jbe 0x40fecd
mov ebx, dword [ecx + 0x30]
mov eax, ebp
sub eax, ebx
cdq
mov ebx, eax
mov eax, edi
sub eax, 2
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edx
je 0x40fec1
sub eax, 2
je 0x40fe97
sub eax, 4
je 0x40fdbf
mov eax, dword [ecx + 0x34]
mov byte [eax], bl
jmp 0x40fecd
mov edi, edx
mov ecx, 0x10
mov eax, ebx
xor esi, esi
and edi, 0xff0000
call fcn.004152b0
or esi, eax
or edi, edx
mov ecx, 0x10
mov eax, esi
mov edx, edi
call fcn.004152b0
mov esi, dword [esp + 0x64]
xor ecx, ecx
mov edi, esi
or eax, ecx
and edi, 0xff00
mov ecx, 0x10
or edx, edi
call fcn.004152b0
mov edi, esi
xor ecx, ecx
and edi, 0xff
or eax, ecx
or edx, edi
mov ecx, 8
call fcn.004152b0
mov edi, eax
mov ecx, 0x10
mov dword [esp + 0x24], edi
mov edi, edx
mov eax, ebx
mov edx, esi
call fcn.00415290
xor ecx, ecx
and ebx, 0xff00
or edx, ecx
or eax, ebx
mov ecx, 0x10
call fcn.00415290
mov ecx, dword [esp + 0x60]
xor esi, esi
and ecx, 0xff0000
or edx, esi
or eax, ecx
mov ecx, 0x10
call fcn.00415290
mov ecx, dword [esp + 0x60]
or edx, esi
and ecx, 0xff000000
or eax, ecx
mov ecx, 8
call fcn.00415290
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
or esi, eax
or edi, edx
mov edx, dword [ecx + 0x34]
mov dword [edx], esi
mov esi, dword [esp + 0x34]
mov dword [edx + 4], edi
mov edi, dword [esp + 0x28]
jmp 0x40fed1
mov eax, ebx
mov edx, ebx
and eax, 0xff0000
shr edx, 0x10
or eax, edx
mov edx, ebx
shl edx, 0x10
and ebx, 0xff00
or edx, ebx
shr eax, 8
shl edx, 8
or eax, edx
mov edx, dword [ecx + 0x34]
mov dword [edx], eax
jmp 0x40fecd
mov edx, dword [ecx + 0x34]
xor eax, eax
mov al, bh
mov ah, bl
mov word [edx], ax
mov edi, dword [esp + 0x28]
mov eax, dword [ecx + 0xc]
test eax, eax
jle 0x40ff0e
cmp ebp, dword [esp + 0x44]
ja 0x410ae9
mov eax, dword [ecx + 0x14]
test eax, eax
jbe 0x40ff0e
mov eax, dword [ecx + 0x18]
test eax, eax
jge 0x40ff01
mov eax, dword [ecx + 0x18]
mov dword [ecx + 0x34], ebp
sub ebp, eax
mov dword [esp + 0x18], ebp
mov dword [ecx + 0x30], ebp
jmp 0x40ff0e
mov edx, dword [ecx + 0x18]
mov eax, ebp
add eax, edx
mov dword [ecx + 0x30], ebp
mov dword [ecx + 0x34], eax
cmp esi, 1
jle 0x40ff58
mov eax, dword [ecx + 4]
test byte [eax + 0x44], 4
je 0x40ff36
mov edx, dword [eax + 0x18]
mov eax, dword [ecx - 0x98]
add eax, edx
mov dword [ecx - 0x98], eax
mov dword [ecx + 0x24], 0
jmp 0x40ff58
mov eax, dword [edi + 0x1c]
mov edx, dword [ecx - 0x98]
add edx, eax
mov dword [ecx - 0x98], edx
mov dword [ecx + 0x24], 0
jmp 0x40ff58
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0xc]
test eax, eax
jg 0x40ffba
sub ecx, 0xbc
dec esi
test esi, esi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], esi
jle 0x410b1b
mov eax, dword [ecx]
mov dword [esp + 0x28], eax
mov edx, dword [eax + 0x10]
test edx, edx
je 0x40ff9c
mov edi, dword [ecx + 0x10]
inc edi
mov dword [ecx + 0x10], edi
mov edx, edi
cmp edx, dword [eax + 0x2c]
jl 0x410adb
mov dword [ecx + 0x10], 0
mov edx, dword [ecx + 0xc]
dec edx
mov dword [ecx + 0xc], edx
mov edx, dword [eax + 0x1c]
mov eax, dword [ecx + 0x28]
add eax, edx
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 0x38]
mov dword [esp + 0x1c], eax
jmp 0x410adb
mov edx, dword [ecx + 0x10]
lea eax, [edx + edx*4]
lea eax, [eax + eax*8]
mov ebx, dword [edi + eax*4 + 0xbc]
lea esi, [edi + eax*4 + 0xb8]
mov eax, dword [esp + 0x1810]
mov dword [esp + 0x2c], esi
cmp ebx, eax
jle 0x410001
mov eax, dword [edi + 0x10]
test eax, eax
je 0x41000e
lea eax, [edx + 1]
mov edx, dword [edi + 0x2c]
mov dword [ecx + 0x10], eax
cmp eax, edx
jl 0x410adb
mov dword [ecx + 0x10], 0
jmp 0x41000e
test byte [esi + 0x44], 2
je 0x41002c
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x40ffe7
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x28]
dec edx
mov dword [ecx + 0xc], edx
mov edx, dword [edi + 0x1c]
add eax, edx
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 0x38]
mov dword [esp + 0x1c], eax
jmp 0x410adb
mov eax, dword [esi + 0x58]
test eax, eax
jbe 0x41007d
mov edx, dword [esi + 0x5c]
mov ebx, dword [ecx + 0x28]
add edx, ebx
sub eax, 2
je 0x41006f
sub eax, 2
je 0x410064
sub eax, 4
je 0x410057
xor eax, eax
mov al, byte [edx]
cdq
mov dword [esp + 0x54], edx
mov ebx, eax
jmp 0x410080
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 0x54], edx
mov ebx, eax
jmp 0x410080
mov eax, dword [edx]
cdq
mov dword [esp + 0x54], edx
mov ebx, eax
jmp 0x410080
xor eax, eax
mov ax, word [edx]
cdq
mov dword [esp + 0x54], edx
mov ebx, eax
jmp 0x410080
mov ebx, dword [esi + 0x24]
test ebx, ebx
mov dword [esp + 0x40], ebx
jl 0x410b0d
mov eax, dword [esi + 0x24]
cmp eax, ebx
jge 0x41009b
test eax, eax
jg 0x410b0d
test ebx, ebx
jg 0x4100cd
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x4100c4
mov esi, dword [ecx + 0xc]
mov eax, dword [edi + 0x1c]
mov edx, dword [ecx + 0x28]
dec esi
add edx, eax
mov dword [ecx + 0xc], esi
mov dword [ecx + 0x28], edx
mov ecx, dword [ecx + 0x38]
mov dword [esp + 0x1c], ecx
jmp 0x410adb
mov eax, dword [ecx + 0x10]
inc eax
jmp 0x40ffea
mov eax, dword [ecx + 0x28]
mov edx, dword [esi + 0x2c]
add edx, eax
mov al, byte [esi + 0x44]
test al, 4
mov dword [esp + 0x10], edx
je 0x410107
mov eax, dword [esi + 8]
mov edx, dword [edx]
cmp eax, 1
mov dword [esp + 0x10], edx
jle 0x4100f5
mov eax, dword [esi + 0x14]
add eax, edx
jmp 0x41010a
mov eax, dword [esi + 0x78]
mov edi, dword [esp + 0x5c]
mov eax, dword [eax + edi + 0x130]
add eax, edx
jmp 0x41010a
mov eax, dword [ecx + 0x2c]
mov edi, dword [esi + 8]
mov dword [esp + 0x38], eax
cmp edi, 1
jle 0x4107ee
sub edi, 0x15
je 0x410549
dec edi
je 0x410323
mov ecx, dword [esi + 0x18]
imul ecx, ebx
add ecx, edx
cmp ecx, eax
jbe 0x410143
mov dword [esp + 0x14], 0x82010407
jmp 0x41074c
mov esi, dword [esi + 0x1c]
mov ecx, dword [esp + 0x44]
mov eax, esi
imul eax, ebx
add eax, ebp
cmp eax, ecx
ja 0x410744
dec esi
je 0x4102d2
dec esi
je 0x4102ad
sub esi, 2
je 0x41026f
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ebx
mov esi, dword [ecx + 4]
mov eax, dword [ecx]
mov ebx, esi
mov ecx, 0x10
mov edx, esi
mov dword [esp + 0x78], eax
xor edi, edi
and ebx, 0xff0000
call fcn.004152b0
or edi, eax
or ebx, edx
mov ecx, 0x10
mov eax, edi
mov edx, ebx
call fcn.004152b0
mov edi, esi
xor ecx, ecx
and edi, 0xff00
or eax, ecx
or edx, edi
mov ecx, 0x10
call fcn.004152b0
mov edi, esi
xor ecx, ecx
and edi, 0xff
or eax, ecx
or edx, edi
mov ecx, 8
call fcn.004152b0
mov edi, dword [esp + 0x78]
mov ebx, eax
mov dword [esp + 0x38], ebx
mov ebx, edx
mov ecx, 0x10
mov eax, edi
mov edx, esi
call fcn.00415290
xor ecx, ecx
and edi, 0xff00
or edx, ecx
or eax, edi
mov ecx, 0x10
call fcn.00415290
mov ecx, dword [esp + 0x78]
xor esi, esi
and ecx, 0xff0000
or edx, esi
or eax, ecx
mov ecx, 0x10
call fcn.00415290
mov ecx, dword [esp + 0x78]
or edx, esi
and ecx, 0xff000000
or eax, ecx
mov ecx, 8
call fcn.00415290
mov ecx, dword [esp + 0x38]
or ebx, edx
or ecx, eax
mov eax, dword [esp + 0x24]
mov dword [ebp], ecx
mov ecx, dword [esp + 0x10]
mov dword [ebp + 4], ebx
add ebp, 8
add ecx, 8
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], eax
jne 0x410178
mov dword [esp + 0x18], ebp
jmp 0x41074c
mov eax, dword [edx]
add ebp, 4
mov ecx, eax
mov esi, eax
and ecx, 0xff0000
add edx, 4
shr esi, 0x10
or ecx, esi
mov esi, eax
shl esi, 0x10
and eax, 0xff00
or esi, eax
shr ecx, 8
shl esi, 8
or ecx, esi
dec ebx
mov dword [ebp - 4], ecx
jne 0x41026f
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ebp
jmp 0x41074c
mov esi, ebx
mov ax, word [edx]
xor ecx, ecx
mov cl, ah
add ebp, 2
mov ch, al
add edx, 2
mov word [ebp - 2], cx
dec esi
jne 0x4102af
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ebp
jmp 0x41074c
cmp ebx, 0x40
jg 0x4102fe
test ebx, ebx
jbe 0x41074c
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
mov dl, byte [eax]
mov byte [ebp], dl
inc ebp
inc eax
dec ecx
jne 0x4102e7
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebp
jmp 0x41074c
mov ecx, ebx
mov esi, edx
mov eax, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
add edx, ebx
and ecx, 3
add ebp, ebx
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ebp
jmp 0x41074c
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
jne 0x410340
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, dword [esp + 0x10]
mov edi, eax
push edi
push esi
mov dword [esp + 0x28], eax
call fcn.004145b0
lea ebx, [eax + eax + 2]
add esp, 8
cmp ebx, edi
mov dword [esp + 0x50], ebx
jg 0x41073a
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x50]
mov edx, dword [esp + 0x44]
sub edx, ebp
lea ecx, [eax + ebx]
cmp edx, ecx
jl 0x410744
sub eax, 2
je 0x4104cb
sub eax, 2
je 0x4104a0
sub eax, 4
je 0x41039b
mov byte [ebp], bl
jmp 0x4104d5
mov eax, ebx
mov ecx, 0x10
cdq
mov edi, eax
mov eax, ebx
and eax, 0xff00
mov esi, edx
cdq
mov ebp, eax
mov eax, edi
mov dword [esp + 0x3c], ebp
mov ebp, edx
mov edx, esi
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], esi
call fcn.00415290
mov edi, dword [esp + 0x3c]
or ebp, edx
or edi, eax
mov ecx, 0x10
mov eax, edi
mov edx, ebp
call fcn.00415290
mov edi, eax
mov eax, ebx
and eax, 0xff0000
mov ebp, edx
cdq
or edi, eax
or ebp, edx
mov ecx, 0x10
mov eax, edi
mov edx, ebp
call fcn.00415290
mov edi, dword [esp + 0x68]
xor ebx, ebx
mov ecx, edi
or edx, ebx
and ecx, 0xff000000
or eax, ecx
mov ecx, 8
call fcn.00415290
mov ebx, eax
mov ecx, 0x10
mov dword [esp + 0x3c], ebx
mov ebx, edx
mov dword [esp + 0x58], ebx
mov ebx, esi
mov eax, edi
mov edx, esi
xor ebp, ebp
and ebx, 0xff0000
call fcn.004152b0
or ebp, eax
or ebx, edx
mov ecx, 0x10
mov eax, ebp
mov edx, ebx
call fcn.004152b0
mov edi, esi
xor ecx, ecx
and edi, 0xff00
or eax, ecx
or edx, edi
mov ecx, 0x10
call fcn.004152b0
xor ecx, ecx
and esi, 0xff
or eax, ecx
or edx, esi
mov ecx, 8
call fcn.004152b0
mov ecx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
or ecx, eax
mov eax, dword [esp + 0x58]
or eax, edx
mov dword [ebp], ecx
mov dword [ebp + 4], eax
mov ebx, dword [esp + 0x50]
jmp 0x4104d5
mov ecx, ebx
mov edx, ebx
and ecx, 0xff0000
mov eax, ebx
shr edx, 0x10
or ecx, edx
mov edx, ebx
shl eax, 0x10
and edx, 0xff00
or eax, edx
shr ecx, 8
shl eax, 8
or ecx, eax
mov dword [ebp], ecx
jmp 0x4104d5
xor eax, eax
mov al, bh
mov ah, bl
mov word [ebp], ax
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + 0x50]
add ebp, edx
cmp ebx, 0x40
mov dword [esp + 0x18], ebp
ja 0x4104fd
test ebx, ebx
jbe 0x410527
mov eax, ebx
mov dl, byte [esi]
mov byte [ebp], dl
inc ebp
inc esi
dec eax
jne 0x4104ed
mov dword [esp + 0x18], ebp
jmp 0x410527
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov edx, ecx
mov esi, eax
mov edi, ebp
add eax, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x10], eax
and ecx, 3
add ebp, ebx
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x18], ebp
mov esi, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
sub edi, ebx
add esi, edi
inc eax
cmp eax, ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], eax
jl 0x41032b
jmp 0x41074c
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x20]
test edx, edx
jne 0x410566
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
sub edx, eax
mov edi, dword [esp + 0x10]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x24], edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
cmp ebx, edx
jge 0x41073a
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x44]
inc ebx
sub esi, ebp
mov eax, dword [ecx + 0x50]
mov dword [esp + 0x3c], ebx
lea ecx, [eax + ebx]
cmp esi, ecx
jl 0x410744
sub eax, 2
je 0x4106ea
sub eax, 2
je 0x4106bf
sub eax, 4
je 0x4105be
mov byte [ebp], bl
jmp 0x4106f4
mov eax, ebx
mov ecx, 0x10
cdq
mov edi, eax
mov eax, ebx
and eax, 0xff00
mov esi, edx
cdq
mov ebp, eax
mov eax, edi
mov dword [esp + 0x50], ebp
mov ebp, edx
mov edx, esi
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], esi
call fcn.00415290
mov edi, dword [esp + 0x50]
or ebp, edx
or edi, eax
mov ecx, 0x10
mov eax, edi
mov edx, ebp
call fcn.00415290
mov edi, eax
mov eax, ebx
and eax, 0xff0000
mov ebp, edx
cdq
or edi, eax
or ebp, edx
mov ecx, 0x10
mov eax, edi
mov edx, ebp
call fcn.00415290
mov edi, dword [esp + 0x70]
xor ebx, ebx
mov ecx, edi
or edx, ebx
and ecx, 0xff000000
or eax, ecx
mov ecx, 8
call fcn.00415290
mov ebx, eax
mov ecx, 0x10
mov dword [esp + 0x50], ebx
mov ebx, edx
mov dword [esp + 0x58], ebx
mov ebx, esi
mov eax, edi
mov edx, esi
xor ebp, ebp
and ebx, 0xff0000
call fcn.004152b0
or ebp, eax
or ebx, edx
mov ecx, 0x10
mov eax, ebp
mov edx, ebx
call fcn.004152b0
mov edi, esi
xor ecx, ecx
and edi, 0xff00
or eax, ecx
or edx, edi
mov ecx, 0x10
call fcn.004152b0
xor ecx, ecx
and esi, 0xff
or eax, ecx
or edx, esi
mov ecx, 8
call fcn.004152b0
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x3c]
or ecx, eax
mov eax, dword [esp + 0x58]
mov dword [ebp], ecx
or eax, edx
mov edx, dword [esp + 0x24]
mov dword [ebp + 4], eax
jmp 0x4106f4
mov ecx, ebx
mov eax, ebx
and ecx, 0xff0000
mov esi, ebx
shr eax, 0x10
or ecx, eax
mov eax, ebx
shl eax, 0x10
and esi, 0xff00
or eax, esi
shr ecx, 8
shl eax, 8
or ecx, eax
mov dword [ebp], ecx
jmp 0x4106f4
xor ecx, ecx
mov cl, bh
mov ch, bl
mov word [ebp], cx
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x10]
mov ecx, dword [eax + 0x50]
add ebp, ecx
mov ecx, ebx
mov eax, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x20]
and ecx, 3
add ebp, ebx
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
add esi, edx
inc eax
cmp eax, ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], eax
jl 0x410551
jmp 0x41074c
mov dword [esp + 0x14], 0x82010406
jmp 0x41074c
mov dword [esp + 0x14], 0x82010402
mov eax, dword [esp + 0x2c]
test byte [eax + 0x44], 4
je 0x410764
mov ecx, dword [eax + 0x2c]
mov edx, dword [esp + 0x30]
shl ecx, 1
mov dword [edx + 0x24], ecx
jmp 0x410772
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
sub eax, dword [ecx + 0x28]
mov dword [ecx + 0x24], eax
test dword [esp + 0x14], 0x80000000
jne 0x410b1b
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
test eax, eax
mov eax, dword [esp + 0x30]
jne 0x4107ad
mov esi, dword [eax + 0xc]
mov ecx, dword [ecx + 0x1c]
mov edx, dword [eax + 0x28]
dec esi
add edx, ecx
mov dword [eax + 0xc], esi
mov dword [eax + 0x28], edx
mov edx, dword [eax + 0x38]
mov dword [esp + 0x1c], edx
jmp 0x410adb
mov esi, dword [eax + 0x10]
mov edx, dword [ecx + 0x2c]
inc esi
mov dword [eax + 0x10], esi
mov eax, esi
cmp eax, edx
jl 0x410adb
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov edx, dword [eax + 0xc]
mov dword [eax + 0x10], 0
dec edx
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x1c]
mov ecx, dword [eax + 0x28]
add ecx, edx
mov dword [eax + 0x28], ecx
mov eax, dword [eax + 0x38]
mov dword [esp + 0x1c], eax
jmp 0x410adb
cmp dword [esp + 0x34], 0x20
jge 0x410af3
test edi, edi
jne 0x41097e
mov eax, dword [esi + 0x68]
mov ebx, dword [ecx + 0x28]
mov edx, dword [esi + 0x64]
add eax, ebx
sub edx, 2
je 0x410834
sub edx, 2
je 0x410830
sub edx, 4
je 0x410821
xor edx, edx
mov dl, byte [eax]
jmp 0x410839
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], eax
jmp 0x410846
mov eax, dword [eax]
jmp 0x41083b
xor edx, edx
mov dx, word [eax]
mov eax, edx
cdq
mov edi, eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], edi
mov eax, dword [esi + 0x78]
mov edx, dword [esp + 0x5c]
mov ebx, dword [eax + edx + 0x248]
lea esi, [eax + edx + 0x114]
xor eax, eax
mov dword [esp + 0x28], esi
mov edx, dword [esi + 0x138]
cmp edx, ebx
setg al
dec eax
mov dword [esp + 0x20], eax
mov eax, edi
sub eax, edx
js 0x4108a1
cmp eax, dword [esi + 0x2c]
jge 0x4108a1
lea edx, [eax + eax*4]
lea edx, [edx + edx*8]
mov ebx, dword [esi + edx*4 + 0x138]
lea edx, [esi + edx*4]
cmp ebx, edi
jne 0x4108a1
cmp ebx, dword [edx + 0x134]
jg 0x4108a1
mov dword [esp + 0x20], eax
jmp 0x410922
mov edx, dword [esi + 0x2c]
cmp edx, 0x10
jge 0x4108d0
xor ebx, ebx
test edx, edx
jle 0x410922
lea eax, [esi + 0x134]
cmp dword [eax + 4], edi
jg 0x4108be
cmp edi, dword [eax]
jle 0x4108ca
inc ebx
add eax, 0xb4
cmp ebx, edx
jl 0x4108b5
jmp 0x410922
mov dword [esp + 0x20], ebx
jmp 0x410922
lea eax, [edx - 1]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x24], eax
jl 0x410922
mov eax, dword [esp + 0x24]
lea edx, [eax + ebx]
sar edx, 1
lea eax, [edx + edx*4]
lea eax, [eax + eax*8]
mov edi, dword [esi + eax*4 + 0x138]
lea eax, [esi + eax*4]
mov eax, dword [eax + 0x134]
cmp edi, eax
jg 0x410913
cmp dword [esp + 0x48], edi
jge 0x41090d
dec edx
mov dword [esp + 0x24], edx
jmp 0x410916
cmp dword [esp + 0x48], eax
jle 0x41091e
lea ebx, [edx + 1]
cmp ebx, dword [esp + 0x24]
jle 0x4108dd
jmp 0x410922
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
cmp eax, 0xffffffff
je 0x410947
mov edi, dword [esp + 0x1810]
lea edx, [eax + eax*4]
lea edx, [edx + edx*8]
mov edx, dword [esi + edx*4 + 0xbc]
cmp edx, edi
jg 0x410947
test esi, esi
jne 0x41099c
mov eax, dword [ecx]
mov dword [esp + 0x28], eax
mov edx, dword [eax + 0x10]
test edx, edx
jne 0x410972
mov esi, dword [ecx + 0xc]
mov eax, dword [eax + 0x1c]
mov edx, dword [ecx + 0x28]
dec esi
add edx, eax
mov dword [ecx + 0xc], esi
mov dword [ecx + 0x28], edx
mov ecx, dword [ecx + 0x38]
mov dword [esp + 0x1c], ecx
jmp 0x410adb
mov edx, dword [ecx + 0x10]
inc edx
mov dword [ecx + 0x10], edx
jmp 0x40ff8c
mov edx, dword [esi + 0x78]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], 0
lea esi, [edx + eax + 0x114]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], esi
mov edx, dword [esp + 0x1810]
mov edi, dword [esi + 0x58]
cmp edi, edx
jg 0x410b03
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
add ecx, 0xbc
inc edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x64]
xor edx, edx
cmp eax, edx
mov dword [ecx + 0x24], edx
mov dword [ecx], esi
mov dword [ecx + 0xc], edi
mov dword [ecx + 0x28], ebx
mov dword [ecx + 0x30], ebp
jbe 0x410a16
mov edx, dword [esi + 0x68]
mov dword [ecx + 0x14], eax
cmp edx, 0xffffffff
je 0x410a04
mov edi, dword [esp + 0x2c]
mov edx, eax
mov dword [ecx + 0x34], ebp
neg edx
add ebp, eax
mov dword [ecx + 0x18], edx
mov dword [esp + 0x18], ebp
jmp 0x410a62
mov eax, dword [esi + 0x5c]
mov edi, dword [esp + 0x2c]
mov dword [ecx + 0x18], eax
lea edx, [eax + ebp]
mov dword [ecx + 0x34], edx
jmp 0x410a62
mov edi, dword [esp + 0x2c]
mov eax, dword [edi + 0x50]
cmp eax, edx
jbe 0x410a5f
mov edx, dword [edi + 0x54]
mov dword [ecx + 0x14], eax
cmp edx, 0xffffffff
je 0x410a3c
mov dword [ecx + 0x34], ebp
add ebp, eax
neg eax
mov dword [esp + 0x18], ebp
mov dword [ecx + 0x18], eax
jmp 0x410a62
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x28]
cmp eax, edx
jl 0x410a52
sub eax, edx
mov dword [ecx + 0x18], eax
add eax, ebp
mov dword [ecx + 0x34], eax
jmp 0x410a62
mov edx, dword [ecx - 0x8c]
add edx, eax
mov dword [ecx + 0x34], edx
jmp 0x410a62
mov dword [ecx + 0x14], edx
mov eax, dword [esi + 0x74]
mov edx, dword [esp + 0x38]
test eax, eax
mov dword [ecx + 0x30], ebp
mov dword [ecx + 0x2c], edx
mov dword [ecx + 4], edi
mov dword [ecx + 0x38], 1
jbe 0x410ad1
mov esi, dword [esi + 0x70]
add esi, ebx
sub edx, esi
cmp edx, eax
jge 0x410a92
mov dword [esp + 0x14], 0x82010407
jmp 0x410ad1
sub eax, 2
je 0x410ac6
sub eax, 2
je 0x410abb
sub eax, 4
je 0x410aac
mov al, byte [esp + 0x1810]
mov byte [esi], al
jmp 0x410ad1
mov eax, dword [esp + 0x1810]
cdq
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x410ad1
mov ecx, dword [esp + 0x1810]
mov dword [esi], ecx
jmp 0x410ad1
mov dx, word [esp + 0x1810]
mov word [esi], dx
test dword [esp + 0x14], 0x80000000
jne 0x410b1b
mov esi, dword [esp + 0x34]
test esi, esi
jg 0x40fd67
jmp 0x410b1b
mov dword [esp + 0x14], 0x82010402
jmp 0x410b1b
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x14], 0x82010404
mov dword [ecx + 0x24], eax
jmp 0x410b1b
mov dword [esp + 0x14], 0x82010401
jmp 0x410b1b
mov edx, dword [esi + 0x2c]
mov dword [esp + 0x14], 0x82010403
mov dword [ecx + 0x24], edx
mov esi, dword [esp + 0x180c]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xa4]
test edi, 0x80000000
mov dword [esi + 4], eax
je 0x410b98
mov edx, dword [esp + 0x34]
mov eax, 1
cmp edx, eax
jle 0x410b98
lea ecx, [esp + 0x160]
mov ebx, dword [ecx - 0x20]
test byte [ebx + 0x44], 4
jne 0x410b7e
mov ebx, dword [ecx]
add ecx, 0xbc
add dword [esi + 4], ebx
inc eax
cmp eax, edx
jl 0x410b4c
mov eax, dword [esp + 0x1808]
sub ebp, dword [eax]
mov dword [eax + 4], ebp
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17f0
ret
lea ecx, [eax + eax*2]
shl ecx, 4
sub ecx, eax
mov edx, dword [esp + ecx*4 + 0x84]
mov ecx, dword [esi + 4]
mov eax, dword [edx + 0x18]
add ecx, eax
mov dword [esi + 4], ecx
mov eax, dword [esp + 0x1808]
sub ebp, dword [eax]
mov dword [eax + 4], ebp
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17f0
ret
mov ebx, dword [esp + 0x180c]
mov ecx, dword [esp + 0x1808]
xor eax, eax
pop edi
mov dword [ebx + 4], eax
pop esi
mov dword [ecx + 4], eax
pop ebp
mov eax, 0x82010401
pop ebx
add esp, 0x17f0
ret
pop edi
pop esi
pop ebp
mov eax, 0x82010468
pop ebx
add esp, 0x17f0
ret