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

Disassembly:
sub esp, 0xb8
push esi
push edi
mov eax, ecx
lea edi, [esp + 0x1c]
push 0x24
pop ecx
mov esi, eax
mov dword [esp + 0xbc], eax
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 0x78], 0xffffffff
jne 0x407bd3
xor eax, eax
inc eax
jmp 0x408957
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xb0], eax
mov al, byte [esp + 0x4d]
push ebx
mov ebx, dword [esp + 0xa0]
push ebp
mov ebp, dword [esp + 0xa0]
mov byte [esp + 0x23], al
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
cmp eax, 0x1c
ja case.default.0x407c3f
jmp dword [eax*4 + 0x408960]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40893e
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
mov cl, byte [eax]
inc eax
mov dword [esp + 0x3c], eax
cmp cl, 0xe1
ja case.default.0x407c3f
xor edx, edx
movzx ecx, cl
mov eax, ecx
push 0x2d
pop esi
div esi
xor edx, edx
mov edi, eax
mov eax, ecx
div esi
push 9
movzx esi, dl
xor edx, edx
mov eax, esi
pop ecx
div ecx
mov ecx, edi
movzx eax, dl
xor edx, edx
mov dword [esp + 0x74], eax
xor eax, eax
inc eax
shl eax, cl
dec eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x94], eax
mov eax, esi
push 9
pop ecx
div ecx
xor edx, edx
mov esi, 0x300
inc edx
mov ecx, eax
mov eax, dword [esp + 0xac]
shl edx, cl
mov ecx, dword [esp + 0x74]
dec edx
mov dword [esp + 0xc0], edx
mov dword [esp + 0x98], edx
lea ecx, [ecx + edi]
shl esi, cl
add esi, 0x736
lea edi, [esi + esi]
cmp edi, dword [esp + 0x34]
je 0x407d12
test eax, eax
je 0x407cf6
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push edi
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [esp + 0xac], eax
test eax, eax
je case.default.0x407c3f
mov dword [esp + 0x34], edi
sub esi, 1
mov ecx, 0x400
mov word [eax + esi*2], cx
jne 0x407d12
mov edi, dword [esp + 0x40]
xor eax, eax
mov ecx, eax
mov esi, eax
jmp 0x407d55
mov edi, dword [esp + 0x40]
test edi, edi
je 0x4088be
mov edx, dword [esp + 0x3c]
dec edi
shl ecx, 3
mov dword [esp + 0x40], edi
movzx eax, byte [edx]
shl eax, cl
mov ecx, dword [esp + 0x14]
or esi, eax
inc edx
inc ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x70], esi
cmp ecx, 4
jl 0x407d30
mov eax, dword [esp + 0x38]
cmp esi, eax
je 0x407da0
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x38], esi
test eax, eax
je 0x407d84
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [esp + 0xa8], eax
test eax, eax
je case.default.0x407c3f
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xa8]
xor edx, edx
push 5
mov byte [ecx + eax - 1], dl
pop ecx
jmp 0x407ddb
mov edi, dword [esp + 0x40]
test edi, edi
je 0x4088c8
mov edx, dword [esp + 0x3c]
dec edi
shl ebx, 8
mov dword [esp + 0x40], edi
movzx eax, byte [edx]
or ebx, eax
inc edx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x3c], edx
mov eax, ecx
dec ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x68], ecx
test eax, eax
jne 0x407db6
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x4c]
and esi, dword [esp + 0xbc]
mov eax, dword [esp + 0x78]
shl eax, 4
add eax, esi
mov dword [esp + 0xb8], esi
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0xac]
mov dword [esp + 0x28], 6
lea edi, [esi + eax*2]
jmp 0x4086e4
test esi, esi
jne 0x407eb9
movzx edx, byte [esp + 0x54]
push 8
pop eax
mov cl, al
mov eax, dword [esp + 0x4c]
sub cl, byte [esp + 0x74]
and eax, dword [esp + 0xc0]
shr edx, cl
mov ecx, dword [esp + 0x74]
shl eax, cl
mov ecx, dword [esp + 0xac]
add edx, eax
imul eax, edx, 0x600
add ecx, 0xe6c
add eax, ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x78]
cmp eax, 4
jge 0x407e75
xor eax, eax
jmp 0x407e82
cmp eax, 0xa
jge 0x407e7f
sub eax, 3
jmp 0x407e82
sub eax, 6
cmp dword [esp + 0x7c], 0
mov dword [esp + 0x78], eax
je 0x407eb1
mov eax, dword [esp + 0x9c]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
cmp eax, ecx
jb 0x407ea2
add eax, ecx
mov ecx, dword [esp + 0xa8]
xor edx, edx
inc edx
mov al, byte [eax + ecx]
jmp 0x407f2a
xor edx, edx
inc edx
jmp 0x4080eb
mov eax, dword [esp + 0x78]
mov dword [esp + 0x7c], 1
add eax, 0xc0
push 7
mov esi, dword [esp + 0xb0]
lea edi, [esi + eax*2]
pop eax
mov dword [esp + 0x28], eax
jmp 0x4086e4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4088d2
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
shl ebx, 8
mov dword [esp + 0xa0], ebp
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x3c]
mov dword [esp + 0xa4], ebx
cmp ecx, esi
jne 0x408004
cmp edx, 0x100
jge 0x40809d
mov al, byte [esp + 0x23]
mov esi, dword [esp + 0x58]
movzx ecx, al
add al, al
shr ecx, 7
mov byte [esp + 0x23], al
mov byte [esp + 0x55], al
mov dword [esp + 0x14], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x68], ecx
shl eax, 8
add eax, edx
lea edi, [esi + eax*2]
movzx eax, word [edi]
mov esi, eax
mov dword [esp + 0x5c], edi
mov eax, ebp
mov dword [esp + 0x10], esi
shr eax, 0xb
imul eax, esi
mov dword [esp + 0x18], esi
xor esi, esi
cmp ebx, eax
jae 0x407f86
mov ebp, eax
mov eax, 0x800
sub eax, dword [esp + 0x18]
sar eax, 5
add eax, dword [esp + 0x10]
add edx, edx
jmp 0x407fab
sub ebx, eax
lea edx, [edx*2 + 1]
sub ebp, eax
mov dword [esp + 0xa4], ebx
mov ax, word [esp + 0x10]
inc esi
shr ax, 5
sub word [esp + 0x10], ax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x10], edx
mov word [edi], ax
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x70], esi
cmp ebp, 0x1000000
jae 0x407f12
jmp case.0x407c3f.13
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4088dc
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
shl ebx, 8
mov dword [esp + 0xa0], ebp
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x3c]
mov dword [esp + 0xa4], ebx
cmp edx, 0x100
jge 0x40809d
mov edi, dword [esp + 0x58]
lea eax, [edx + edx]
add edi, eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0x5c], edi
movzx eax, word [edi]
mov dword [esp + 0x18], eax
movzx eax, ax
mov dword [esp + 0x10], eax
mov eax, ebp
shr eax, 0xb
imul eax, dword [esp + 0x10]
cmp ebx, eax
jae 0x408059
mov ebp, eax
mov eax, 0x800
sub eax, dword [esp + 0x10]
sar eax, 5
add eax, dword [esp + 0x18]
add edx, edx
mov word [edi], ax
jmp 0x40807d
mov edx, dword [esp + 0x18]
sub ebx, eax
sub ebp, eax
mov dword [esp + 0xa4], ebx
mov ax, dx
shr ax, 5
sub dx, ax
mov word [edi], dx
mov edx, dword [esp + 0xb4]
inc edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xa0], ebp
cmp ebp, 0x1000000
jae 0x408004
jmp case.0x407c3f.14
mov al, byte [esp + 0x6c]
xor edx, edx
mov byte [esp + 0x54], al
mov dword [esp + 0x7c], edx
jmp 0x408171
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4088e6
mov ecx, dword [esp + 0x3c]
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
shl ebx, 8
movzx eax, byte [ecx]
or ebx, eax
mov dword [esp + 0xa0], ebp
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x3c], ecx
cmp edx, 0x100
jge 0x408163
mov edi, dword [esp + 0x58]
lea eax, [edx + edx]
add edi, eax
mov dword [esp + 0xb4], eax
mov eax, ebp
mov dword [esp + 0x5c], edi
shr eax, 0xb
movzx ecx, word [edi]
imul eax, ecx
mov dword [esp + 0x18], ecx
cmp ebx, eax
jae 0x408127
mov ebp, eax
mov eax, 0x800
sub eax, ecx
sar eax, 5
add eax, ecx
add edx, edx
mov word [edi], ax
jmp 0x408147
mov edx, dword [esp + 0xb4]
sub ebx, eax
sub ebp, eax
mov dword [esp + 0xa4], ebx
mov ax, cx
shr ax, 5
sub cx, ax
inc edx
mov word [edi], cx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xa0], ebp
cmp ebp, 0x1000000
jae 0x4080e3
jmp case.0x407c3f.15
mov al, byte [esp + 0x6c]
mov byte [esp + 0x54], al
jmp 0x408171
mov al, byte [esp + 0x54]
mov edx, dword [esp + 0x48]
test edx, edx
je 0x4088f0
add dword [esp + 0x4c], 1
push 0
pop ecx
adc dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x44]
mov byte [ecx], al
inc ecx
dec edx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0xa8]
mov byte [ecx + edx], al
mov eax, ecx
inc eax
mov ecx, dword [esp + 0x14]
xor edx, edx
div dword [esp + 0x38]
mov dword [esp + 0x9c], edx
jmp 0x408689
cmp esi, 1
jne 0x4081d8
mov eax, dword [esp + 0x78]
add eax, 0xcc
push 8
jmp 0x407ecc
mov eax, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
mov dword [esp + 0x90], eax
push 0xa
pop eax
mov dword [esp + 0x8c], esi
mov esi, dword [esp + 0x1c]
push 7
mov dword [esp + 0x8c], esi
pop esi
cmp dword [esp + 0x78], esi
mov dword [esp + 0x2c], 0x16
cmovl eax, esi
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xac]
add eax, 0x664
mov dword [esp + 0x58], eax
jmp 0x40869d
test esi, esi
mov esi, dword [esp + 0xac]
jne 0x408250
mov eax, dword [esp + 0x78]
add eax, 0xf
shl eax, 4
add eax, dword [esp + 0xb8]
push 9
jmp 0x407ed3
mov edi, dword [esp + 0x78]
add edi, 0xd8
mov dword [esp + 0x28], 0xa
lea edi, [esi + edi*2]
jmp 0x4086e4
test esi, esi
jne 0x408383
mov eax, dword [esp + 0x4c]
or eax, dword [esp + 0x50]
je case.default.0x407c3f
push 0xb
pop eax
push 7
pop edx
cmp dword [esp + 0x78], edx
push 9
pop edx
cmovl eax, edx
mov dword [esp + 0x78], eax
cmp dword [esp + 0x48], 0
je 0x4088fa
mov eax, dword [esp + 0x9c]
sub eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
cmp eax, edx
jb 0x4082b4
add eax, edx
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x9c]
push 0
mov al, byte [eax + edx]
mov byte [ecx + edx], al
xor edx, edx
mov byte [esp + 0x58], al
mov eax, ecx
inc eax
mov ecx, dword [esp + 0x48]
div dword [esp + 0x3c]
add dword [esp + 0x50], 1
pop eax
adc dword [esp + 0x50], eax
mov al, byte [esp + 0x54]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x48]
push 2
mov dword [esp + 0xa0], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x48], ecx
pop eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x24], eax
jmp 0x407c36
test esi, esi
jne 0x40831c
mov eax, dword [esp + 0x88]
jmp 0x40836d
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0xac]
add edi, 0xe4
mov dword [esp + 0x28], 0xb
lea edi, [esi + edi*2]
jmp 0x4086e4
test esi, esi
jne 0x40834a
mov eax, dword [esp + 0x8c]
jmp 0x40835f
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x8c]
mov dword [esp + 0x90], esi
mov esi, dword [esp + 0x88]
mov dword [esp + 0x8c], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x88], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xac]
add eax, 0xa68
mov dword [esp + 0x2c], 0x15
mov dword [esp + 0x58], eax
jmp 0x40869d
push 0xb
pop eax
push 7
pop edx
cmp dword [esp + 0x78], edx
push 8
pop edx
cmovl eax, edx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x1c]
jmp 0x4085db
cmp dword [esp + 0x80], 4
mov ecx, dword [esp + 0xac]
push 3
pop eax
cmovl eax, dword [esp + 0x80]
add ecx, 0x360
shl eax, 7
add eax, ecx
mov dword [esp + 0x30], 0x19
push 6
mov dword [esp + 0x5c], eax
pop esi
jmp 0x4087c3
mov eax, edx
cmp edx, 4
jl 0x4085cf
mov esi, edx
and eax, 1
sar esi, 1
or eax, 2
dec esi
mov ecx, esi
shl eax, cl
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
cmp edx, 0xe
jge 0x408437
mov ecx, dword [esp + 0xac]
sub eax, edx
add ecx, 0x55e
lea eax, [ecx + eax*2]
jmp 0x4084cc
xor eax, eax
lea ecx, [esi - 4]
mov edx, eax
jmp 0x408474
mov eax, dword [esp + 0x40]
test eax, eax
je 0x408904
mov esi, dword [esp + 0x3c]
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
shl ebx, 8
movzx eax, byte [esi]
or ebx, eax
mov dword [esp + 0xa0], ebp
inc esi
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x3c], esi
dec ecx
mov dword [esp + 0x68], ecx
test ecx, ecx
jle 0x4084a9
shr ebp, 1
add edx, edx
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x6c], edx
cmp ebx, ebp
jb 0x40849f
sub ebx, ebp
or edx, 1
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x6c], edx
cmp ebp, 0x1000000
jae 0x408473
jmp case.0x407c3f.12
mov eax, dword [esp + 0x1c]
shl edx, 4
add eax, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xac]
push 4
add eax, 0x644
pop esi
mov dword [esp + 0x58], eax
xor eax, eax
inc eax
mov dword [esp + 0x70], esi
xor ecx, ecx
mov dword [esp + 0x60], eax
mov edx, ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x6c], edx
jmp 0x408520
mov eax, dword [esp + 0x40]
test eax, eax
je 0x408918
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
shl ebx, 8
mov dword [esp + 0xa0], ebp
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x3c]
mov dword [esp + 0xa4], ebx
mov eax, dword [esp + 0x60]
inc ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x14], ecx
cmp ecx, esi
jge 0x4085c9
mov edi, dword [esp + 0x58]
add eax, eax
add edi, eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0x5c], edi
movzx eax, word [edi]
mov dword [esp + 0x14], eax
movzx eax, ax
mov dword [esp + 0x18], eax
mov eax, ebp
shr eax, 0xb
imul eax, dword [esp + 0x18]
cmp ebx, eax
jae 0x40857a
mov ebp, eax
mov eax, 0x800
sub eax, dword [esp + 0x18]
sar eax, 5
add eax, dword [esp + 0x14]
shl dword [esp + 0x60], 1
mov word [edi], ax
jmp 0x4085b1
sub ebx, eax
bts edx, ecx
sub ebp, eax
mov dword [esp + 0x10], edx
mov ax, word [esp + 0x14]
shr ax, 5
sub word [esp + 0x14], ax
mov eax, dword [esp + 0x14]
mov word [edi], ax
mov eax, dword [esp + 0xb4]
inc eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0xa0], ebp
cmp ebp, 0x1000000
jae 0x40851b
jmp case.0x407c3f.16
mov eax, dword [esp + 0x1c]
add eax, edx
inc eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
test eax, eax
je 0x40890e
xor edx, edx
cmp edx, dword [esp + 0x50]
ja case.default.0x407c3f
jb 0x4085fb
cmp eax, dword [esp + 0x4c]
ja case.default.0x407c3f
mov eax, dword [esp + 0x80]
add eax, 2
mov dword [esp + 0x80], eax
cdq
add dword [esp + 0x4c], eax
adc dword [esp + 0x50], edx
mov edx, dword [esp + 0x9c]
cmp dword [esp + 0x48], 0
je 0x408922
mov eax, edx
mov edx, dword [esp + 0x38]
sub eax, dword [esp + 0x1c]
cmp eax, edx
jb 0x408637
add eax, edx
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0x9c]
mov al, byte [eax + edx]
mov byte [ecx + edx], al
xor edx, edx
mov byte [esp + 0x54], al
mov eax, ecx
inc eax
mov ecx, dword [esp + 0x44]
div dword [esp + 0x38]
mov al, byte [esp + 0x54]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x80]
dec dword [esp + 0x48]
dec eax
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x9c], edx
mov dword [esp + 0x80], eax
test eax, eax
jg 0x40861c
mov edx, dword [esp + 0x10]
push 2
pop eax
mov dword [esp + 0x24], eax
jmp 0x407c36
mov eax, dword [esp + 0x58]
mov edi, eax
mov dword [esp + 0x28], 0x12
jmp 0x4086e4
test esi, esi
jne 0x4086d5
mov edx, dword [esp + 0x58]
xor eax, eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xb8]
shl eax, 4
add edx, 4
add edx, eax
push 3
mov dword [esp + 0x5c], edx
pop esi
jmp 0x4087bb
mov edi, dword [esp + 0x58]
add edi, 2
mov dword [esp + 0x28], 0x13
mov dword [esp + 0x5c], edi
movzx eax, word [edi]
mov esi, eax
mov dword [esp + 0x18], eax
mov eax, ebp
shr eax, 0xb
imul eax, esi
cmp ebx, eax
jae 0x408714
mov ebp, eax
mov eax, 0x800
sub eax, esi
sar eax, 5
add eax, esi
mov word [edi], ax
xor eax, eax
mov esi, eax
jmp 0x40872f
sub ebx, eax
sub ebp, eax
mov ax, si
mov dword [esp + 0xa4], ebx
shr ax, 5
sub si, ax
mov word [edi], si
xor esi, esi
inc esi
mov dword [esp + 0x70], esi
mov dword [esp + 0xa0], ebp
cmp ebp, 0x1000000
jae 0x408774
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40892c
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
shl ebx, 8
mov dword [esp + 0xa0], ebp
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x3c]
mov dword [esp + 0xa4], ebx
mov eax, dword [esp + 0x28]
jmp 0x4088b5
test esi, esi
jne 0x4087a4
mov edx, dword [esp + 0x58]
push 8
pop eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xb8]
shl eax, 4
add edx, 0x104
jmp 0x4086c7
add dword [esp + 0x58], 0x204
push 0x10
pop eax
push 8
mov dword [esp + 0x84], eax
pop eax
mov esi, eax
mov dword [esp + 0x30], 0x14
mov dword [esp + 0x70], esi
xor edx, edx
mov ecx, esi
inc edx
mov dword [esp + 0x60], edx
jmp 0x40880a
mov eax, dword [esp + 0x40]
test eax, eax
je 0x408936
mov edx, dword [esp + 0x3c]
shl ebp, 8
dec eax
mov dword [esp + 0x40], eax
shl ebx, 8
movzx eax, byte [edx]
or ebx, eax
mov dword [esp + 0xa0], ebp
inc edx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x60]
dec ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x14], ecx
test ecx, ecx
jle 0x408890
mov edi, dword [esp + 0x58]
lea eax, [edx + edx]
add edi, eax
mov dword [esp + 0xb4], eax
mov eax, ebp
mov dword [esp + 0x5c], edi
shr eax, 0xb
movzx edx, word [edi]
imul eax, edx
mov dword [esp + 0x18], edx
cmp ebx, eax
jae 0x408854
mov ebp, eax
mov eax, 0x800
sub eax, edx
sar eax, 5
add eax, edx
shl dword [esp + 0x60], 1
mov word [edi], ax
jmp 0x408878
sub ebx, eax
sub ebp, eax
mov ax, dx
mov dword [esp + 0xa4], ebx
shr ax, 5
sub dx, ax
mov eax, dword [esp + 0xb4]
inc eax
mov word [edi], dx
mov dword [esp + 0x60], eax
mov dword [esp + 0xa0], ebp
cmp ebp, 0x1000000
jae 0x408805
jmp case.0x407c3f.24
xor eax, eax
mov ecx, esi
inc eax
shl eax, cl
sub edx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10], edx
mov dword [esp + 0x6c], edx
jmp 0x408302
add dword [esp + 0x80], edx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
jmp 0x407c36
mov dword [esp + 0x24], 1
jmp 0x40893e
mov dword [esp + 0x24], 3
jmp 0x40893e
mov dword [esp + 0x24], 0xd
jmp 0x40893e
mov dword [esp + 0x24], 0xe
jmp 0x40893e
mov dword [esp + 0x24], 0xf
jmp 0x40893e
mov dword [esp + 0x24], 0x1a
jmp 0x40893e
mov dword [esp + 0x24], 0x1b
jmp 0x40893e
mov dword [esp + 0x24], 0xc
jmp 0x40893e
or dword [esp + 0x80], 0xffffffff
jmp 0x40893e
mov dword [esp + 0x24], 0x10
jmp 0x40893e
mov dword [esp + 0x24], 0x1c
jmp 0x40893e
mov dword [esp + 0x24], 5
jmp 0x40893e
mov dword [esp + 0x24], 0x18
mov edi, dword [esp + 0xc4]
lea esi, [esp + 0x24]
push 0x24
pop ecx
rep movsd dword es:[edi], dword [esi]
xor eax, eax
jmp 0x408955
or eax, 0xffffffff
pop ebp
pop ebx
pop edi
pop esi
add esp, 0xb8
ret