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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb8
push ebx
push ebp
push esi
mov eax, ecx
mov ecx, 0x22
push edi
mov esi, eax
mov dword [esp + 0xc0], eax
lea edi, [esp + 0x28]
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 0x80], 0xffffffff
jne 0x40978d
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0xa4]
mov edi, dword [esp + 0xa0]
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x5c]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xb0], eax
mov al, byte [esp + 0x55]
mov byte [esp + 0x23], al
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], edx
cmp eax, 0x1c
ja case.default.0x4097fa
jmp dword [eax*4 + 0x40a6a4]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a67c
mov ecx, dword [esp + 0x40]
dec eax
mov dword [esp + 0x44], eax
mov al, byte [ecx]
inc ecx
mov dword [esp + 0x40], ecx
cmp al, 0xe1
ja case.default.0x4097fa
movzx eax, al
mov ecx, 0x2d
cdq
idiv ecx
mov ecx, 9
mov esi, eax
movzx eax, dl
cdq
idiv ecx
movzx ecx, dl
mov edx, 1
mov dword [esp + 0x74], ecx
mov ecx, esi
shl edx, cl
mov ecx, eax
dec edx
mov dword [esp + 0xb8], edx
mov dword [esp + 0x94], edx
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x74]
dec edx
mov dword [esp + 0xbc], edx
mov dword [esp + 0x98], edx
lea ecx, [ecx + esi]
mov esi, 0x300
shl esi, cl
add esi, 0x736
lea eax, [esi + esi]
cmp eax, dword [esp + 0x38]
je 0x4098c7
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x4098a6
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
lea eax, [esi + esi]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [esp + 0xac], eax
test eax, eax
je case.default.0x4097fa
lea ecx, [esi + esi]
mov dword [esp + 0x38], ecx
jmp 0x4098ce
mov eax, dword [esp + 0xac]
test esi, esi
je 0x4098de
mov ecx, 0x400
dec esi
mov word [eax + esi*2], cx
jne 0x4098d7
mov esi, dword [esp + 0x44]
xor edx, edx
xor ecx, ecx
jmp 0x409914
mov esi, dword [esp + 0x44]
test esi, esi
je 0x40a4c1
mov eax, dword [esp + 0x40]
lea ecx, [edx*8]
inc dword [esp + 0x40]
dec esi
mov dword [esp + 0x44], esi
movzx eax, byte [eax]
shl eax, cl
mov ecx, dword [esp + 0x14]
or ecx, eax
inc edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ecx
cmp edx, 4
jl 0x4098ec
mov eax, dword [esp + 0x3c]
cmp ecx, eax
je 0x409963
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x3c], ecx
test eax, eax
je 0x409947
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov ecx, dword [esp + 0x14]
push ecx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [esp + 0xa8], eax
test eax, eax
je case.default.0x4097fa
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xa8]
mov edx, 5
mov byte [ecx + eax - 1], 0
jmp 0x40999f
mov esi, dword [esp + 0x44]
test esi, esi
je 0x40a4e5
mov ecx, dword [esp + 0x40]
dec esi
shl ebx, 8
mov dword [esp + 0x44], esi
movzx eax, byte [ecx]
or ebx, eax
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
mov eax, edx
dec edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x68], edx
test eax, eax
jne 0x40997a
mov ecx, dword [esp + 0x50]
and ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x78]
shl eax, 4
add eax, ecx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x2c], 6
lea esi, [ecx + eax*2]
jmp 0x40a2c3
test ecx, ecx
jne 0x409a83
movzx edx, byte [esp + 0x54]
mov ecx, 8
sub cl, byte [esp + 0x74]
mov eax, dword [esp + 0x50]
and eax, dword [esp + 0xbc]
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 0x409a3b
mov dword [esp + 0x78], 0
jmp 0x409a4c
cmp eax, 0xa
jge 0x409a45
sub eax, 3
jmp 0x409a48
sub eax, 6
mov dword [esp + 0x78], eax
cmp dword [esp + 0x7c], 0
je 0x409a79
mov eax, dword [esp + 0x9c]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jb 0x409a68
add eax, ecx
mov ecx, dword [esp + 0xa8]
mov ebp, 1
mov al, byte [eax + ecx]
jmp 0x409af6
mov ebp, 1
jmp 0x409c9d
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xac]
add esi, 0xc0
mov dword [esp + 0x7c], 1
mov dword [esp + 0x2c], 7
lea esi, [eax + esi*2]
jmp 0x40a2c3
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a509
dec eax
shl ebx, 8
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
shl edi, 8
mov dword [esp + 0xa0], edi
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x40]
mov dword [esp + 0xa4], ebx
cmp edx, ecx
jne 0x409bd5
cmp ebp, 0x100
jge 0x409c4d
mov al, byte [esp + 0x23]
mov ecx, dword [esp + 0x58]
movzx edx, al
add al, al
shr edx, 7
mov byte [esp + 0x23], al
mov byte [esp + 0x55], al
mov dword [esp + 0x24], edx
lea eax, [edx + 1]
mov dword [esp + 0x68], edx
shl eax, 8
add eax, ebp
lea esi, [ecx + eax*2]
mov eax, edi
movzx ecx, word [esi]
shr eax, 0xb
imul eax, ecx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x18], ecx
cmp ebx, eax
jae 0x409b53
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x70], edi
mov edi, eax
mov eax, 0x800
sub eax, ecx
sar eax, 5
add eax, ecx
add ebp, ebp
mov word [esi], ax
jmp 0x409b82
sub ebx, eax
mov dword [esp + 0x14], 1
sub edi, eax
mov dword [esp + 0x70], 1
mov ax, cx
mov dword [esp + 0xa4], ebx
shr ax, 5
lea ebp, [ebp*2 + 1]
sub cx, ax
mov word [esi], cx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x409ade
jmp case.0x4097fa.13
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a52d
mov ecx, dword [esp + 0x40]
dec eax
mov dword [esp + 0x44], eax
shl ebx, 8
shl edi, 8
movzx eax, byte [ecx]
or ebx, eax
mov dword [esp + 0xa0], edi
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
cmp ebp, 0x100
jge 0x409c4d
mov esi, dword [esp + 0x58]
lea eax, [ebp*2]
add esi, eax
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x5c], esi
shr eax, 0xb
movzx ecx, word [esi]
mov edx, ecx
imul eax, edx
cmp ebx, eax
jae 0x409c18
mov edi, eax
mov eax, 0x800
sub eax, edx
sar eax, 5
add eax, ecx
add ebp, ebp
mov word [esi], ax
jmp 0x409c35
mov ebp, dword [esp + 0x18]
sub ebx, eax
sub edi, eax
mov dword [esp + 0xa4], ebx
mov ax, cx
shr ax, 5
sub cx, ax
inc ebp
mov word [esi], cx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x409bd5
jmp case.0x4097fa.14
mov al, byte [esp + 0x6c]
mov byte [esp + 0x54], al
mov dword [esp + 0x7c], 0
jmp 0x409d1b
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a551
mov ecx, dword [esp + 0x40]
dec eax
mov dword [esp + 0x44], eax
shl ebx, 8
shl edi, 8
movzx eax, byte [ecx]
or ebx, eax
mov dword [esp + 0xa0], edi
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
cmp ebp, 0x100
jge 0x409d0d
mov esi, dword [esp + 0x58]
lea eax, [ebp*2]
add esi, eax
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x5c], esi
shr eax, 0xb
movzx ecx, word [esi]
mov edx, ecx
imul eax, edx
cmp ebx, eax
jae 0x409cd8
mov edi, eax
mov eax, 0x800
sub eax, edx
sar eax, 5
add eax, ecx
add ebp, ebp
mov word [esi], ax
jmp 0x409cf5
mov ebp, dword [esp + 0x18]
sub ebx, eax
sub edi, eax
mov dword [esp + 0xa4], ebx
mov ax, cx
shr ax, 5
sub cx, ax
inc ebp
mov word [esi], cx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x409c95
jmp case.0x4097fa.15
mov al, byte [esp + 0x6c]
mov byte [esp + 0x54], al
jmp 0x409d1b
mov al, byte [esp + 0x54]
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x40a575
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0xa8]
inc dword [esp + 0x50]
dec dword [esp + 0x4c]
mov byte [edx], al
inc edx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x9c]
mov byte [edx + ecx], al
lea eax, [edx + 1]
xor edx, edx
mov ecx, dword [esp + 0x14]
div dword [esp + 0x3c]
mov eax, 2
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
jmp 0x4097f1
cmp ecx, 1
jne 0x409d97
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xac]
add esi, 0xcc
mov dword [esp + 0x2c], 8
lea esi, [eax + esi*2]
jmp 0x40a2c3
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
cmp dword [esp + 0x78], 7
mov dword [esp + 0x90], eax
mov eax, 0xa
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x88], ecx
mov ecx, 7
cmovl eax, ecx
mov dword [esp + 0x30], 0x16
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xac]
add eax, 0x664
mov dword [esp + 0x2c], 0x12
mov dword [esp + 0x58], eax
mov esi, eax
jmp 0x40a2c3
test ecx, ecx
jne 0x409e27
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xac]
add eax, 0xf
shl eax, 4
add eax, dword [esp + 0xb0]
mov dword [esp + 0x2c], 9
lea esi, [ecx + eax*2]
jmp 0x40a2c3
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xac]
add esi, 0xd8
mov dword [esp + 0x2c], 0xa
lea esi, [eax + esi*2]
jmp 0x40a2c3
test ecx, ecx
jne 0x409f53
cmp dword [esp + 0x50], ecx
je case.default.0x4097fa
xor eax, eax
cmp dword [esp + 0x78], 7
setge al
lea eax, [eax*2 + 9]
mov dword [esp + 0x78], eax
cmp dword [esp + 0x4c], 0
je 0x40a599
mov edx, dword [esp + 0x9c]
mov eax, edx
sub eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x3c]
jb 0x409e91
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xa8]
inc dword [esp + 0x50]
mov al, byte [eax + ecx]
mov byte [edx + ecx], al
mov byte [esp + 0x54], al
lea eax, [edx + 1]
xor edx, edx
mov ecx, dword [esp + 0x14]
div dword [esp + 0x3c]
mov al, byte [esp + 0x54]
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x48]
mov byte [edx], al
inc edx
dec dword [esp + 0x4c]
mov eax, 2
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
jmp 0x4097f1
test ecx, ecx
jne 0x409eec
mov eax, dword [esp + 0x88]
jmp 0x409f3d
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xac]
add esi, 0xe4
mov dword [esp + 0x2c], 0xb
lea esi, [eax + esi*2]
jmp 0x40a2c3
test ecx, ecx
jne 0x409f1a
mov eax, dword [esp + 0x8c]
jmp 0x409f2f
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xac]
add eax, 0xa68
mov dword [esp + 0x30], 0x15
mov dword [esp + 0x58], eax
mov esi, eax
mov dword [esp + 0x2c], 0x12
jmp 0x40a2c3
cmp dword [esp + 0x78], 7
mov eax, 0xb
mov edx, 8
cmovl eax, edx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x1c]
jmp 0x40a1cf
cmp dword [esp + 0x80], 4
mov eax, 3
mov ecx, dword [esp + 0xac]
cmovl eax, dword [esp + 0x80]
add ecx, 0x360
shl eax, 7
add eax, ecx
mov dword [esp + 0x34], 0x19
mov dword [esp + 0x58], eax
mov ecx, 6
jmp 0x40a3b2
mov eax, ebp
cmp ebp, 4
jl 0x40a1c3
mov ecx, ebp
and eax, 1
sar ecx, 1
or eax, 2
dec ecx
shl eax, cl
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
cmp ebp, 0xe
jge 0x40a019
mov edx, dword [esp + 0xac]
sub eax, ebp
add edx, 0x55e
lea eax, [edx + eax*2]
jmp 0x40a0b2
xor ebp, ebp
lea edx, [ecx - 4]
jmp 0x40a054
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a5bd
mov ecx, dword [esp + 0x40]
dec eax
mov dword [esp + 0x44], eax
shl ebx, 8
shl edi, 8
movzx eax, byte [ecx]
or ebx, eax
mov dword [esp + 0xa0], edi
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
dec edx
mov dword [esp + 0x68], edx
test edx, edx
jle 0x40a089
shr edi, 1
add ebp, ebp
mov dword [esp + 0xa0], edi
mov dword [esp + 0x6c], ebp
cmp ebx, edi
jb 0x40a07f
sub ebx, edi
or ebp, 1
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x6c], ebp
cmp edi, 0x1000000
jae 0x40a053
jmp case.0x4097fa.12
mov eax, dword [esp + 0x1c]
mov ecx, 4
shl ebp, 4
add eax, ebp
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xac]
add eax, 0x644
mov dword [esp + 0x58], eax
xor ebp, ebp
mov eax, 1
mov dword [esp + 0x70], ecx
mov dword [esp + 0x60], eax
xor edx, edx
mov dword [esp + 0x6c], ebp
jmp 0x40a104
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a608
dec eax
shl ebx, 8
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
shl edi, 8
mov dword [esp + 0xa0], edi
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x40]
mov dword [esp + 0xa4], ebx
mov eax, dword [esp + 0x60]
inc edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x24], edx
cmp edx, ecx
jge 0x40a1bd
mov esi, dword [esp + 0x58]
add eax, eax
add esi, eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0x5c], esi
movzx ecx, word [esi]
movzx eax, cx
mov dword [esp + 0x18], eax
mov eax, edi
shr eax, 0xb
imul eax, dword [esp + 0x18]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x24], eax
cmp ebx, eax
jae 0x40a163
mov edi, eax
mov eax, 0x800
sub eax, dword [esp + 0x18]
sar eax, 5
add eax, ecx
shl dword [esp + 0x60], 1
mov word [esi], ax
jmp 0x40a1a1
sub ebx, dword [esp + 0x24]
mov ecx, edx
sub edi, dword [esp + 0x24]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0xc4]
or ebp, eax
mov ax, cx
mov dword [esp + 0x6c], ebp
shr ax, 5
sub cx, ax
mov dword [esp + 0xa4], ebx
mov eax, dword [esp + 0xb4]
inc eax
mov word [esi], cx
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x40a0ff
jmp case.0x4097fa.16
mov eax, dword [esp + 0x1c]
add eax, ebp
inc eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], eax
test eax, eax
je 0x40a5e1
mov edx, dword [esp + 0x50]
cmp eax, edx
ja case.default.0x4097fa
mov eax, dword [esp + 0x80]
add eax, 2
add edx, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x9c]
cmp dword [esp + 0x4c], 0
je 0x40a62c
mov eax, edx
sub eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x3c]
jb 0x40a21c
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xa8]
dec dword [esp + 0x4c]
mov al, byte [eax + ecx]
mov byte [edx + ecx], al
mov byte [esp + 0x54], al
lea eax, [edx + 1]
xor edx, edx
mov ecx, dword [esp + 0x48]
div dword [esp + 0x3c]
mov al, byte [esp + 0x54]
inc dword [esp + 0x48]
mov byte [ecx], al
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x14]
dec eax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x80], eax
test eax, eax
jg 0x40a201
mov edx, dword [esp + 0x24]
mov eax, 2
mov dword [esp + 0x28], eax
jmp 0x4097f1
mov eax, dword [esp + 0x58]
mov esi, eax
mov dword [esp + 0x2c], 0x12
jmp 0x40a2c3
test ecx, ecx
jne 0x40a2b4
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0xb0]
add edx, 4
shl eax, 4
add edx, eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x58], edx
mov ecx, 3
jmp 0x40a3aa
mov esi, dword [esp + 0x58]
add esi, 2
mov dword [esp + 0x2c], 0x13
mov dword [esp + 0x5c], esi
movzx ecx, word [esi]
mov eax, edi
shr eax, 0xb
imul eax, ecx
mov dword [esp + 0x18], ecx
cmp ebx, eax
jae 0x40a2ef
mov edi, eax
mov eax, 0x800
sub eax, ecx
sar eax, 5
add eax, ecx
xor ecx, ecx
mov word [esi], ax
jmp 0x40a30c
sub ebx, eax
sub edi, eax
mov ax, cx
mov dword [esp + 0xa4], ebx
shr ax, 5
sub cx, ax
mov word [esi], cx
mov ecx, 1
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x40a355
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a650
dec eax
shl ebx, 8
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
shl edi, 8
mov dword [esp + 0xa0], edi
movzx eax, byte [eax]
or ebx, eax
inc dword [esp + 0x40]
mov dword [esp + 0xa4], ebx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
jmp 0x4097f1
test ecx, ecx
jne 0x40a392
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0xb0]
add ecx, 0x104
shl eax, 4
add ecx, eax
mov dword [esp + 0x80], 8
mov dword [esp + 0x58], ecx
mov ecx, 3
jmp 0x40a3aa
add dword [esp + 0x58], 0x204
mov ecx, 8
mov dword [esp + 0x80], 0x10
mov dword [esp + 0x34], 0x14
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ecx
mov ebp, 1
mov edx, ecx
mov dword [esp + 0x60], ebp
jmp 0x40a3ff
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a674
mov ecx, dword [esp + 0x40]
dec eax
mov dword [esp + 0x44], eax
shl ebx, 8
shl edi, 8
movzx eax, byte [ecx]
or ebx, eax
mov dword [esp + 0xa0], edi
inc ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
mov ebp, dword [esp + 0x60]
dec edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x24], edx
test edx, edx
jle 0x40a48f
mov esi, dword [esp + 0x58]
lea eax, [ebp*2]
add esi, eax
mov dword [esp + 0xb4], eax
mov eax, edi
mov dword [esp + 0x5c], esi
shr eax, 0xb
movzx ecx, word [esi]
imul eax, ecx
mov dword [esp + 0x18], ecx
cmp ebx, eax
jae 0x40a453
mov edi, eax
mov eax, 0x800
sub eax, ecx
sar eax, 5
add eax, ecx
add ebp, ebp
mov word [esi], ax
mov dword [esp + 0x60], ebp
jmp 0x40a477
sub ebx, eax
sub edi, eax
mov ax, cx
mov dword [esp + 0xa4], ebx
shr ax, 5
sub cx, ax
mov eax, dword [esp + 0xb4]
inc eax
mov word [esi], cx
mov dword [esp + 0x60], eax
mov dword [esp + 0xa0], edi
cmp edi, 0x1000000
jae 0x40a3fa
jmp case.0x4097fa.24
mov ecx, dword [esp + 0x14]
mov eax, 1
shl eax, cl
sub ebp, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x28], eax
jmp 0x4097f1
mov eax, dword [esp + 0x30]
add dword [esp + 0x80], ebp
mov dword [esp + 0x28], eax
jmp 0x4097f1
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 1
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 3
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0xd
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0xe
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0xf
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0x1a
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0x1b
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0xc
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x80], 0xffffffff
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0x10
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 0x1c
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
mov dword [esp + 0x28], 5
rep movsd dword es:[edi], dword [esi]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x28], 0x18
mov edi, dword [esp + 0xc0]
lea esi, [esp + 0x28]
mov ecx, 0x22
xor eax, eax
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
or eax, 0xffffffff
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret