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

Disassembly:
sub esp, 0x7c
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x98]
test edi, edi
jne 0x41fd63
mov ax, word [0x80ded4]
test ax, ax
jl 0x41fd52
movsx eax, ax
sub eax, edi
je 0x41fd17
dec eax
je 0x41fcff
dec eax
mov eax, dword [0x80df04]
je 0x41fcec
and eax, 0x400
neg eax
sbb eax, eax
and eax, 0xa8
add eax, 0x80
jmp 0x41fd2d
and eax, 0x400
neg eax
sbb eax, eax
and eax, 0xa7
add eax, 0x7e
jmp 0x41fd2d
mov eax, dword [0x80df04]
and eax, 0x400
neg eax
sbb eax, eax
and eax, 0xa8
add eax, 0x7f
jmp 0x41fd2d
mov eax, dword [0x80df04]
and eax, 0x400
neg eax
sbb eax, eax
and eax, 0xa9
add eax, 0x7d
mov ecx, dword [0x533938]
movsx eax, ax
lea eax, [eax + eax*4]
movsx edx, byte [ecx + eax*8 + 5]
lea eax, [ecx + eax*8]
movsx ecx, word [0x80ded2]
imul edx, ecx
mov eax, dword [eax]
lea edi, [eax + edx*2]
jmp 0x41fd63
mov ecx, dword [0x80e01c]
push ecx
call fcn.00450560
add esp, 4
mov edi, eax
call fcn.0048df90
mov edx, dword [0x80e01c]
mov ecx, dword [0x7e70c8]
mov eax, dword [edx + 0x40]
shl eax, 0xe
mov dword [ecx + 0xc], eax
mov edx, dword [0x80e01c]
mov ecx, dword [0x7e70c8]
mov eax, dword [edx + 0x44]
shl eax, 0xe
mov dword [ecx + 0x1c], eax
mov edx, dword [0x80e01c]
mov ecx, dword [0x7e70c8]
mov eax, dword [edx + 0x48]
shl eax, 0xe
mov dword [ecx + 0x2c], eax
mov eax, dword [0x80e01c]
mov dx, word [eax + 0x50]
mov cx, word [eax + 0x4c]
push edx
mov dx, word [eax + 0x4e]
push ecx
push edx
call fcn.0048e4a0
mov ecx, dword [0x533958]
mov edx, dword [0x52b724]
lea eax, [edi + 0x12]
mov dword [esp + 0x1c], eax
lea esi, [ecx + edx*4]
movsx eax, word [edi + 0x10]
movsx ecx, word [edi + 0xe]
movsx edx, word [edi + 0xc]
push eax
push ecx
push edx
call fcn.0048dfd0
lea eax, [esp + 0x28]
push 0
push eax
call fcn.0044fe00
call fcn.0048df30
mov ebx, dword [0x80df1e]
movsx ecx, word [ebx + 4]
movsx edx, word [ebx + 2]
movsx eax, word [ebx]
push ecx
push edx
push eax
call fcn.0048dfd0
mov eax, dword [0x7e70c8]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x1c]
sar ecx, 0xe
sar edx, 0xe
mov dword [esp + 0x68], ecx
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x6c], edx
sub eax, 0x30
movsx edx, word [ebx + 6]
sar ecx, 0xe
mov dword [0x7e70c8], eax
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x70], ecx
mov ecx, dword [esi + 0x68]
mov dword [esp + 0x74], edx
mov edx, dword [esi + 0x64]
push eax
push ecx
push edx
call fcn.0048dfd0
lea eax, [esp + 0x48]
push 6
push eax
call fcn.0044fe00
mov cx, word [0x80df70]
mov dx, word [0x80df6e]
mov ax, word [0x80df6c]
add esp, 0x40
push ecx
push edx
push eax
call fcn.0048e4a0
call fcn.0048df30
mov ebx, dword [0x80df3a]
movsx ecx, word [ebx + 4]
movsx edx, word [ebx + 2]
movsx eax, word [ebx]
push ecx
push edx
push eax
call fcn.0048dfd0
mov eax, dword [0x7e70c8]
mov dl, byte [0x7fd140]
add esp, 0x18
mov ecx, dword [eax + 0x1c]
mov ebp, dword [eax + 0xc]
sar ecx, 0xe
mov dword [esp + 0x50], ecx
mov ecx, dword [eax + 0x2c]
sar ecx, 0xe
mov dword [esp + 0x54], ecx
movsx ecx, word [ebx + 6]
sar ebp, 0xe
test dl, 1
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x58], ecx
je 0x41feec
mov edx, ecx
mov ebx, ecx
sar edx, 3
sar ebx, 2
add edx, ebx
sub ecx, edx
mov dword [esp + 0x58], ecx
sub eax, 0x30
mov dword [0x7e70c8], eax
call fcn.0048df30
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0x78]
mov edx, dword [esi + 0x74]
push eax
push ecx
push edx
call fcn.0048dfd0
lea eax, [esp + 0x1c]
push 0
push eax
call fcn.0044fe00
mov ebx, dword [0x80df3e]
movsx ecx, word [ebx + 4]
movsx edx, word [ebx + 2]
movsx eax, word [ebx]
push ecx
push edx
push eax
call fcn.0048dfd0
mov ecx, dword [0x7e70c8]
mov eax, dword [ecx + 0x1c]
mov edx, dword [ecx + 0xc]
sar eax, 0xe
sar edx, 0xe
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], edx
movsx eax, word [ebx + 6]
mov edx, dword [ecx + 0x2c]
sub ecx, 0x30
sar edx, 0xe
lea eax, [eax + eax*2]
mov dword [esp + 0x94], edx
cdq
sub eax, edx
mov dword [0x7e70c8], ecx
sar eax, 1
mov dword [esp + 0x98], eax
call fcn.0048df30
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xa8]
mov edx, dword [esi + 0xa4]
push eax
push ecx
push edx
call fcn.0048dfd0
lea eax, [esp + 0x3c]
push 2
push eax
call fcn.0044fe00
mov ebx, dword [0x80df4a]
movsx ecx, word [ebx + 4]
movsx edx, word [ebx + 2]
movsx eax, word [ebx]
push ecx
push edx
push eax
call fcn.0048dfd0
mov ecx, dword [0x7e70c8]
add esp, 0x40
mov eax, dword [ecx + 0x1c]
mov edx, dword [ecx + 0xc]
sar eax, 0xe
sar edx, 0xe
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], edx
movsx eax, word [ebx + 6]
mov edx, dword [ecx + 0x2c]
sar edx, 0xe
lea eax, [eax + eax*2]
mov dword [esp + 0x84], edx
cdq
sub eax, edx
sar eax, 1
sub ecx, 0x30
mov dword [esp + 0x88], eax
mov dword [0x7e70c8], ecx
mov eax, dword [esi + 0xdc]
push eax
mov ecx, dword [esi + 0xd8]
mov edx, dword [esi + 0xd4]
push ecx
push edx
call fcn.0048dfd0
lea eax, [esp + 0x1c]
push 2
push eax
call fcn.0044fe00
mov cx, word [0x80df6a]
mov dx, word [0x80df68]
mov ax, word [0x80df66]
push ecx
push edx
push eax
call fcn.0048e4a0
call fcn.0048df30
mov esi, dword [0x80df56]
movsx ecx, word [esi + 4]
movsx edx, word [esi + 2]
movsx eax, word [esi]
push ecx
push edx
push eax
call fcn.0048dfd0
mov eax, dword [0x7e70c8]
add esp, 0x2c
movsx esi, word [esi + 6]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x1c]
mov ebx, dword [eax + 0x2c]
sub eax, 0x30
mov dword [0x7e70c8], eax
mov ax, word [0x7fd140]
sar ecx, 0xe
sar edx, 0xe
sar ebx, 0xe
and ax, 1
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], esi
je 0x4200c7
add ecx, ebp
sar ecx, 1
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x50]
add edx, ecx
sar edx, 1
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x54]
add ebx, edx
sar ebx, 1
mov dword [esp + 0x54], ebx
mov ebp, dword [esp + 0x94]
test ebp, ebp
jne 0x4200e7
test ax, ax
jne 0x4200df
push 0xffffffffffffffd0
push 0xfffffffffffffffc
push 0xfffffffffffffffc
jmp 0x4200ed
push 0xffffffffffffffce
push 0xffffffffffffffd0
push 0xffffffffffffffcc
jmp 0x4200ed
push 0xffffffffffffffce
push 0xffffffffffffffd0
push 0x2c
call fcn.0048dfd0
mov eax, dword [0x7e70c8]
mov esi, dword [0x52bea4]
add esp, 0xc
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x1c]
mov ebx, dword [eax + 0x2c]
sub eax, 0x30
mov dword [0x7e70c8], eax
mov eax, dword [0x533958]
sar ecx, 0xe
lea eax, [eax + esi*4]
mov dword [esp + 0x24], eax
lea eax, [ebp*8]
sub eax, ebp
sar edx, 0xe
lea eax, [eax + eax*2]
sar ebx, 0xe
lea eax, [eax + eax*4]
lea esi, [eax*2 + 0x80e040]
mov eax, dword [ebp*4 + 0x80e020]
test eax, eax
mov dword [esi + 8], ebx
mov dword [esi + 4], edx
mov dword [esi], ecx
je 0x42021a
mov ecx, dword [esp + 0x24]
mov dword [ebp*4 + 0x80e020], 0
mov ebx, 6
lea edi, [ecx + 8]
call fcn.0048df90
mov edx, dword [esi]
mov eax, dword [0x7e70c8]
shl edx, 0xe
mov dword [eax + 0xc], edx
mov ecx, dword [esi + 4]
mov edx, dword [0x7e70c8]
push 0
shl ecx, 0xe
mov dword [edx + 0x1c], ecx
mov eax, dword [esi + 8]
mov ecx, dword [0x7e70c8]
shl eax, 0xe
mov dword [ecx + 0x2c], eax
mov dx, word [esi + 0xc]
mov ax, word [esi + 0xe]
push edx
push eax
call fcn.0048e4a0
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov eax, dword [edi - 4]
push ecx
push edx
push eax
call fcn.0048dfd0
mov eax, dword [0x7e70c8]
add esp, 0x18
add esi, 0x1e
add edi, 0x10
mov ecx, dword [eax + 0xc]
sub eax, 0x30
sar ecx, 0xe
mov dword [esi], ecx
mov edx, dword [eax + 0x4c]
sar edx, 0xe
mov dword [esi + 4], edx
mov ecx, dword [eax + 0x5c]
sar ecx, 0xe
mov dword [esi + 8], ecx
dec ebx
mov dword [0x7e70c8], eax
jne 0x42016a
xor eax, eax
pop edi
mov dword [0x804d44], eax
mov dword [0x804d40], eax
mov dword [0x4bf214], eax
mov eax, 0x800
pop esi
pop ebp
mov dword [0x4ab7dc], eax
mov dword [0x4ab7d8], eax
pop ebx
add esp, 0x7c
ret
mov ebp, dword [0x80e01c]
mov eax, dword [esp + 0x90]
test eax, eax
mov dx, word [ebp + 0x18]
mov word [esp + 0x1c], dx
je 0x42023e
mov dword [esp + 0x20], 0xffff8100
jmp 0x420291
movsx eax, word [edi + 2]
movsx ecx, word [edi]
add eax, ecx
cdq
sub eax, edx
movsx edx, word [edi + 4]
mov ecx, eax
mov eax, dword [ebp + 0x40]
sar ecx, 1
add ecx, eax
movsx eax, word [edi + 6]
add eax, edx
cdq
sub eax, edx
movsx edx, word [edi + 8]
mov ebx, eax
mov eax, dword [ebp + 0x44]
sar ebx, 1
add ebx, eax
movsx eax, word [edi + 0xa]
add eax, edx
cdq
sub eax, edx
mov edx, dword [ebp + 0x48]
sar eax, 1
add eax, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00449a50
add esp, 0x10
mov dword [esp + 0x20], eax
call fcn.0048eb50
mov ecx, dword [0x4bf214]
and eax, 7
lea eax, [ecx + eax - 3]
cmp eax, 0xfffffffe
mov dword [0x4bf214], eax
jg 0x4202b0
inc eax
jmp 0x4202b6
cmp eax, 9
jl 0x4202bb
dec eax
mov dword [0x4bf214], eax
call fcn.0048eb50
mov edx, dword [0x4ab7dc]
and eax, 0x3f
lea eax, [edx + eax*2 - 0x40]
and eax, 0x1ffe
cmp eax, 0x400
mov dword [0x4ab7dc], eax
jge 0x4202e9
mov ecx, 0x800
sub ecx, eax
mov eax, ecx
jmp 0x4202fc
cmp eax, 0xc00
jle 0x420301
lea edx, [eax + eax]
mov ecx, 0x1800
sub ecx, edx
add eax, ecx
mov dword [0x4ab7dc], eax
mov ecx, dword [0x4ab7d8]
mov edx, dword [0x4bf214]
sub eax, ecx
add esi, 0x1e
sar eax, 3
add eax, ecx
mov dword [esp + 0x34], 1
and eax, 0x1ffe
mov dword [0x4ab7d8], eax
movsx ecx, word [eax*2 + 0x4b34d0]
movsx edi, word [eax*2 + 0x4b34d2]
imul ecx, edx
imul edi, edx
mov edx, dword [esp + 0x24]
sar ecx, 0xc
sar edi, 0xc
add edx, 0xfffffff8
mov dword [0x804d40], ecx
mov dword [0x804d44], edi
mov dword [esp + 0x18], edx
jmp 0x42036a
mov ecx, dword [0x804d40]
mov edi, dword [0x804d44]
mov ebp, dword [esp + 0x90]
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
test ebp, ebp
mov dword [esp + 0x2c], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], ebx
jne 0x4203bc
lea ecx, [esp + 0x1c]
push ecx
push ebx
push eax
push edx
call fcn.00449880
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
push edx
mov edx, dword [esi]
push ecx
push edx
push eax
call fcn.00449bd0
mov ecx, dword [0x804d40]
mov edi, dword [0x804d44]
add esp, 0x20
mov dword [esp + 0x14], eax
jmp 0x4203c4
mov dword [esp + 0x14], 0x7fff
mov eax, dword [esi + 0x12]
lea eax, [eax + eax*2]
cdq
and edx, 3
add eax, edx
mov edx, dword [esi]
sar eax, 2
lea ebx, [eax + edx]
mov eax, dword [esi + 0x16]
mov dword [esi], ebx
lea eax, [eax + eax*2]
cdq
and edx, 3
add eax, edx
mov edx, dword [esi + 4]
sar eax, 2
lea ebp, [eax + edx]
mov eax, dword [esi + 0x1a]
mov dword [esp + 0x24], ebp
mov dword [esi + 4], ebp
lea eax, [eax + eax*2]
cdq
and edx, 3
add eax, edx
mov edx, dword [esi + 8]
sar eax, 2
add eax, edx
cmp word [0x80decc], 0
mov dword [esi + 8], eax
jne 0x42043c
movsx edx, word [esp + 0x1c]
lea ebp, [edx + edx*8]
lea edx, [edx + ebp*4]
mov ebp, dword [0x533934]
test byte [ebp + edx*4 + 0x4e], 0x20
mov ebp, dword [esp + 0x24]
je 0x42043c
add ecx, ebx
add edi, eax
mov dword [esi], ecx
mov dword [esi + 8], edi
movsx eax, word [0x80decc]
cmp eax, 4
ja case.0x420448.3
jmp dword [eax*4 + 0x420680]
mov eax, dword [esp + 0x20]
add ebp, 0xa
cmp eax, 0xffff8100
mov dword [esi + 4], ebp
je 0x420464
cmp ebp, eax
jg 0x420489
cmp ebp, dword [esp + 0x14]
jle case.0x420448.3
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [esi], eax
mov dword [esi + 8], ecx
jmp case.0x420448.3
mov eax, dword [esp + 0x20]
cmp ebp, eax
jl 0x420489
mov eax, dword [esp + 0x14]
cmp ebp, eax
jle case.0x420448.3
mov dword [esi + 4], eax
lea ecx, [esp + 0x48]
mov dword [esp + 0x28], 5
mov dword [esp + 0x14], ecx
jmp 0x4204a2
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx - 0xc]
mov edi, dword [esi]
mov ebp, dword [esi + 4]
mov ebx, dword [esi + 8]
sub edi, eax
mov eax, dword [ecx - 8]
sub ebp, eax
mov eax, dword [ecx - 4]
sub ebx, eax
mov edx, ebp
mov eax, ebx
imul edx, ebp
imul eax, ebx
add eax, edx
mov edx, edi
imul edx, edi
mov ecx, dword [ecx]
add eax, edx
mov edx, ecx
imul edx, ecx
cmp eax, edx
jge 0x420527
push eax
call fcn.0048df00
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
jne 0x4204f0
mov dword [esp + 0x24], 1
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
imul eax, edi
cdq
idiv dword [esp + 0x24]
mov edi, dword [ecx - 0xc]
add eax, edi
mov edi, dword [ecx]
mov dword [esi], eax
mov eax, edi
imul eax, ebp
mov ebp, dword [esp + 0x24]
cdq
idiv ebp
add eax, dword [ecx - 8]
mov dword [esi + 4], eax
mov eax, edi
imul eax, ebx
cdq
idiv ebp
add eax, dword [ecx - 4]
mov dword [esi + 8], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
add ecx, 0x10
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], eax
jne 0x42049e
mov eax, dword [esi + 8]
mov edi, dword [esi - 0x16]
mov ecx, dword [esi]
mov edx, dword [esi - 0x1e]
sub eax, edi
sub ecx, edx
mov edx, eax
imul edx, eax
mov eax, ecx
imul eax, ecx
add edx, eax
push edx
call fcn.0048df00
mov ecx, dword [esi]
mov ebx, dword [esi - 0x1e]
mov edx, dword [esi + 8]
mov edi, eax
mov eax, dword [esi - 0x16]
sub ecx, ebx
sub edx, eax
push ecx
push edx
call fcn.0048de90
mov edx, dword [esi - 0x1a]
mov word [esi - 0x10], ax
mov eax, dword [esi + 4]
sub eax, edx
push eax
push edi
call fcn.0048de90
neg eax
mov word [esi - 0x12], ax
call fcn.0048df90
mov ecx, dword [esi - 0x1e]
mov edx, dword [0x7e70c8]
shl ecx, 0xe
mov dword [edx + 0xc], ecx
mov eax, dword [esi - 0x1a]
mov ecx, dword [0x7e70c8]
push 0
shl eax, 0xe
mov dword [ecx + 0x1c], eax
mov edx, dword [esi - 0x16]
mov eax, dword [0x7e70c8]
shl edx, 0xe
mov dword [eax + 0x2c], edx
mov cx, word [esi - 0x12]
mov dx, word [esi - 0x10]
push ecx
push edx
call fcn.0048e4a0
mov edi, dword [esp + 0x54]
add esp, 0x20
cmp edi, 6
jne 0x4205f7
mov ebx, dword [esp + 0x18]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
mov edx, dword [ebx - 4]
push eax
push ecx
push edx
call fcn.0048dfd0
jmp 0x420610
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x10]
mov eax, dword [eax + 0xc]
push ecx
push edx
push eax
call fcn.0048dfd0
mov ebx, dword [esp + 0x24]
mov eax, dword [0x7e70c8]
mov ebp, dword [esp + 0x38]
add esp, 0xc
add esi, 0x1e
mov ecx, dword [eax + 0xc]
sub eax, 0x30
sar ecx, 0xe
mov dword [esi - 0x1e], ecx
mov edx, dword [eax + 0x4c]
sar edx, 0xe
mov dword [esi - 0x1a], edx
mov ecx, dword [eax + 0x5c]
mov edx, dword [esi - 0x1e]
add ebx, 0x10
sar ecx, 0xe
sub edx, ebp
mov ebp, dword [esp + 0x30]
mov dword [esi - 0x16], ecx
mov ecx, dword [esi - 0x1a]
mov dword [esi - 0xc], edx
mov edx, dword [esp + 0x38]
sub ecx, edx
mov edx, dword [esi - 0x16]
sub edx, ebp
mov dword [esi - 8], ecx
mov dword [esi - 4], edx
inc edi
cmp edi, 7
mov dword [0x7e70c8], eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x18], ebx
jl 0x42035e
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret