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

Disassembly:
sub esp, 0x54
push ebx
push ebp
push esi
mov esi, dword [esp + 0x74]
xor ebx, ebx
cmp esi, 0x18
push edi
mov dword [esp + 0x60], ebx
je 0x42115f
cmp esi, 8
jne 0x421c0b
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x84]
cmp ecx, eax
jge 0x421c0b
mov ecx, dword [esp + 0x80]
cmp eax, ecx
jle 0x421187
mov dword [esp + 0x88], ecx
fild dword [esp + 0x7c]
fstp dword [esp + 0x5c]
fild dword [esp + 0x70]
fstp dword [esp + 0x58]
fld dword [esp + 0x5c]
fdiv dword [esp + 0x58]
fstp dword [esp + 0x54]
fild dword [esp + 0x80]
fstp dword [esp + 0x5c]
fild dword [esp + 0x74]
fstp dword [esp + 0x58]
fld dword [esp + 0x5c]
fdiv dword [esp + 0x58]
fstp dword [esp + 0x5c]
fld dword [esp + 0x54]
fmul dword [0x552848]
fadd dword [0x5526f0]
call fcn.004d6118
fld dword [esp + 0x5c]
fmul dword [0x552848]
mov dword [esp + 0x58], eax
fadd dword [0x5526f0]
call fcn.004d6118
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x70]
imul eax, esi
add eax, 0x1f
mov dword [esp + 0x1c], ebx
cdq
and edx, 0x1f
mov dword [esp + 0x38], 1
add eax, edx
mov dword [esp + 0x20], ebx
mov ebp, eax
mov eax, esi
imul eax, dword [esp + 0x7c]
add eax, 0x1f
mov dword [esp + 0x44], ebx
cdq
and edx, 0x1f
add eax, edx
mov edi, eax
mov eax, esi
cdq
and edx, 7
sar ebp, 5
sar edi, 5
add eax, edx
shl ebp, 2
shl edi, 2
sar eax, 3
cmp ebp, ebx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], eax
jle 0x421c0b
cmp edi, ebx
jle 0x421c0b
lea eax, [ebp + 6]
push 1
push eax
call fcn.004d61b4
mov esi, eax
add esp, 8
cmp esi, ebx
mov dword [esp + 0x10], esi
je 0x421c0b
lea eax, [edi + 6]
push 1
push eax
call fcn.004d61b4
add esp, 8
cmp eax, ebx
mov dword [esp + 0x18], eax
je 0x421c02
mov ecx, dword [esp + 0x70]
lea esi, [ecx*4]
push esi
call fcn.004d5aaa
push esi
mov dword [esp + 0x2c], eax
call fcn.004d5aaa
mov ebx, eax
push esi
mov dword [esp + 0x60], ebx
call fcn.004d5aaa
mov esi, eax
mov eax, dword [esp + 0x30]
add esp, 0xc
mov dword [esp + 0x34], esi
test eax, eax
je 0x421bc9
test ebx, ebx
je 0x421bc9
test esi, esi
je 0x421bc9
mov eax, dword [esp + 0x70]
test eax, eax
jbe 0x421317
mov edx, dword [esp + 0x24]
mov ecx, esi
mov esi, dword [esp + 0x70]
sub ecx, ebx
mov eax, ebx
sub edx, ebx
mov dword [ecx + eax], 0x800
mov dword [eax], 0x800
mov dword [edx + eax], 0x800
add eax, 4
dec esi
jne 0x4212f9
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x74]
cmp edx, eax
jne 0x421330
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x42139f
lea eax, [ebp + 6]
push 1
push eax
call fcn.004d61b4
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x421397
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004d59c1
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], 0
push edx
call fcn.004d59c1
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], 0
push eax
call fcn.004d59c1
push ebx
mov dword [esp + 0x34], 0
call fcn.004d59c1
xor ebx, ebx
push esi
mov dword [esp + 0x68], ebx
call fcn.004d59c1
add esp, 0x14
xor esi, esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x60], 1
mov ecx, dword [esp + 0x84]
test ecx, ecx
jg 0x4213be
mov eax, dword [esp + 0x88]
test eax, eax
jle 0x42141c
cmp eax, dword [esp + 0x80]
jge 0x42141c
imul edi, ecx
test ecx, ecx
mov dword [esp + 0x44], edi
jle 0x42141c
mov edi, dword [esp + 0x8c]
mov eax, ebp
mov edx, dword [esp + 0x94]
imul eax, edi
test edx, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], eax
jne 0x42141c
sub eax, ebp
xor ecx, ecx
cmp ecx, eax
mov edi, dword [esp + 0x10]
sbb edx, edx
mov ecx, ebp
and edx, eax
mov eax, dword [esp + 0x68]
lea esi, [edx + eax]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x48]
cmp ecx, eax
mov dword [esp + 0x94], edx
mov dword [esp + 0x2c], 0x1000
mov dword [esp + 0x5c], ecx
jae 0x421b7f
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x74]
cmp eax, ecx
jne 0x421484
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x10]
mov ecx, ebp
lea esi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
add eax, ebp
mov ecx, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
and ecx, 3
inc eax
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 0x1c], eax
jmp 0x42177f
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x70]
cmp edx, 0x1000
jge 0x4215b8
test eax, eax
je 0x4214dc
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jge 0x4214d8
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x10]
mov ecx, ebp
lea esi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x94]
and ecx, 3
add eax, ebp
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x20], eax
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x78]
cmp eax, 8
je 0x421575
cmp eax, 0x18
jne 0x421594
mov ecx, dword [esp + 0x10]
test edi, edi
jbe 0x421594
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x70]
sub esi, ebx
mov eax, ebx
sub edi, ebx
mov dword [esp + 0x84], edx
xor edx, edx
mov ebp, dword [eax + esi]
mov dl, byte [ecx]
add eax, 4
imul edx, dword [esp + 0x94]
add ebp, edx
inc ecx
xor edx, edx
mov dword [eax + esi - 4], ebp
mov dl, byte [ecx]
mov ebp, dword [eax - 4]
imul edx, dword [esp + 0x94]
add ebp, edx
inc ecx
xor edx, edx
mov dword [eax - 4], ebp
mov dl, byte [ecx]
mov ebp, edx
mov edx, dword [esp + 0x94]
imul ebp, edx
add dword [eax + edi - 4], ebp
mov ebp, dword [esp + 0x84]
inc ecx
dec ebp
mov dword [esp + 0x84], ebp
jne 0x421517
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x70]
jmp 0x421594
xor eax, eax
test edi, edi
jbe 0x421594
mov esi, dword [esp + 0x10]
xor ecx, ecx
mov cl, byte [eax + esi]
mov esi, dword [ebx + eax*4]
imul ecx, edx
add esi, ecx
mov dword [ebx + eax*4], esi
inc eax
cmp eax, edi
jb 0x42157b
mov ecx, dword [esp + 0x2c]
mov eax, 1
sub ecx, edx
mov edx, dword [esp + 0x48]
cmp edx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x94], edx
jl 0x421498
jmp 0x4215bc
test eax, eax
je 0x421609
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jge 0x4215f8
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x10]
mov ecx, ebp
lea esi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x94]
and ecx, 3
add eax, ebp
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x38], 0
inc eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x78]
cmp eax, 8
je 0x421718
cmp eax, 0x18
jne 0x421753
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
test eax, eax
jbe 0x421753
mov eax, dword [esp + 0x34]
mov ecx, ebx
sub eax, ebx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x24]
sub eax, ebx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x50], eax
mov ebx, dword [esp + 0x2c]
xor eax, eax
mov al, byte [ebp]
mov edx, dword [esp + 0x8c]
imul eax, ebx
mov edi, dword [ecx + edx]
xor edx, edx
mov dl, byte [ebp + 1]
add eax, edi
inc ebp
mov edi, edx
imul edi, ebx
mov edx, dword [ecx]
add edi, edx
inc ebp
xor edx, edx
mov dl, byte [ebp]
imul edx, ebx
mov ebx, dword [esp + 0x84]
shr eax, 0xc
add edx, dword [ecx + ebx]
inc ebp
cmp eax, 0xff
jbe 0x4216a1
mov eax, 0xff
shr edi, 0xc
cmp edi, 0xff
mov dword [esp + 0x4c], edi
jbe 0x4216b7
mov ebx, 0xff
jmp 0x4216bb
mov bl, byte [esp + 0x4c]
shr edx, 0xc
cmp edx, 0xff
jbe 0x4216cb
mov edx, 0xff
mov byte [esi], al
mov eax, dword [esp + 0x84]
inc esi
add ecx, 4
mov byte [esi], bl
inc esi
mov byte [esi], dl
mov edx, dword [esp + 0x8c]
mov dword [ecx + eax - 4], 0x800
mov eax, dword [esp + 0x50]
mov dword [ecx - 4], 0x800
mov dword [ecx + edx - 4], 0x800
inc esi
dec eax
mov dword [esp + 0x50], eax
jne 0x421657
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x94]
jmp 0x421753
xor ecx, ecx
test edi, edi
jbe 0x421753
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
sub ebp, esi
xor eax, eax
mov al, byte [esi + ebp]
imul eax, dword [esp + 0x2c]
add eax, dword [ebx + ecx*4]
shr eax, 0xc
cmp eax, 0xff
jbe 0x421744
mov eax, 0xff
mov byte [esi], al
mov dword [ebx + ecx*4], 0x800
inc ecx
inc esi
cmp ecx, edi
jb 0x421728
sub edx, dword [esp + 0x2c]
mov dword [esp + 0x94], edx
jne 0x421773
mov eax, dword [esp + 0x48]
mov dword [esp + 0x38], 1
mov dword [esp + 0x94], eax
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x2c], 0x1000
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x7c]
cmp eax, ecx
jne 0x4217b5
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
add eax, ecx
jmp 0x421b58
mov edi, dword [esp + 0x70]
mov edx, 0x800
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
mov esi, 0x1000
test edi, edi
mov dword [esp + 0x84], edx
mov eax, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x50], ecx
jbe 0x4219f6
mov edi, dword [esp + 0x58]
cmp edi, esi
mov dword [esp + 0x4c], edi
jl 0x421926
mov ebp, dword [esp + 0x8c]
test ebx, ebx
je 0x42181f
mov eax, dword [esp + 0x3c]
mov edx, 0x800
add ebp, eax
mov dword [esp + 0x84], edx
mov dword [esp + 0x8c], ebp
mov eax, edx
cmp ebp, dword [esp + 0x40]
jae 0x4219ab
cmp ecx, dword [esp + 0x30]
jge 0x4219ab
mov edi, dword [esp + 0x78]
cmp edi, 8
je 0x4218d7
cmp edi, 0x18
jne 0x4218ff
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x8c]
lea ebp, [ebx + edi]
mov edi, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + edi]
imul ebx, esi
add edx, ebx
xor ebx, ebx
mov bl, byte [ecx + edi + 1]
imul ebx, esi
add eax, ebx
xor ebx, ebx
mov bl, byte [ecx + edi + 2]
mov edi, dword [esp + 0x84]
imul ebx, esi
shr edx, 0xc
add edi, ebx
cmp edx, 0xff
jbe 0x421892
mov edx, 0xff
shr eax, 0xc
cmp eax, 0xff
jbe 0x4218a1
mov eax, 0xff
shr edi, 0xc
cmp edi, 0xff
mov dword [esp + 0x84], edi
jbe 0x4218be
mov dword [esp + 0x84], 0xff
mov bl, byte [esp + 0x84]
mov byte [ebp], dl
inc ebp
mov edi, ebp
mov dword [esp + 0x28], ebp
mov byte [ebp], al
mov byte [edi + 1], bl
jmp 0x4218ff
mov edi, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + edi]
mov edi, ebx
imul edi, esi
add edi, eax
shr edi, 0xc
mov eax, edi
cmp eax, 0xff
jbe 0x4218f8
mov eax, 0xff
mov edi, dword [esp + 0x18]
mov byte [edi + ebp], al
mov edi, dword [esp + 0x4c]
mov ebx, 1
sub edi, esi
mov esi, 0x1000
cmp edi, esi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x28], ebx
jge 0x4217f9
mov ebp, dword [esp + 0x8c]
test edi, edi
jle 0x4219d5
test ebx, ebx
je 0x421955
mov eax, dword [esp + 0x3c]
mov edx, 0x800
add ebp, eax
mov dword [esp + 0x84], edx
mov dword [esp + 0x8c], ebp
mov eax, edx
mov dword [esp + 0x28], 0
cmp ebp, dword [esp + 0x40]
jae 0x421a44
cmp ecx, dword [esp + 0x30]
jge 0x421a44
mov ebx, dword [esp + 0x78]
cmp ebx, 8
je 0x4219ba
cmp ebx, 0x18
jne 0x4219cf
mov ebp, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + ebp]
imul ebx, edi
add edx, ebx
xor ebx, ebx
mov bl, byte [ecx + ebp + 1]
imul ebx, edi
add eax, ebx
xor ebx, ebx
mov bl, byte [ecx + ebp + 2]
mov ebp, dword [esp + 0x84]
imul ebx, edi
add ebp, ebx
mov dword [esp + 0x84], ebp
jmp 0x4219c8
mov esi, 0x1000
mov dword [esp + 0x28], 0
jmp 0x4219d1
mov ebp, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + ebp]
imul ebx, edi
add eax, ebx
mov ebp, dword [esp + 0x8c]
sub esi, edi
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
inc edi
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x3c]
add ecx, edi
mov edi, dword [esp + 0x70]
cmp dword [esp + 0x50], edi
jb 0x4217e9
test esi, esi
jle 0x421a61
sub ecx, dword [esp + 0x3c]
js 0x421a61
cmp ecx, dword [esp + 0x30]
jge 0x421a61
mov edi, dword [esp + 0x78]
cmp edi, 8
je 0x421a53
cmp edi, 0x18
jne 0x421a61
mov edi, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + edi]
imul ebx, esi
add edx, ebx
xor ebx, ebx
mov bl, byte [ecx + edi + 1]
imul ebx, esi
add eax, ebx
xor ebx, ebx
mov bl, byte [ecx + edi + 2]
mov ecx, dword [esp + 0x84]
imul ebx, esi
add ecx, ebx
mov dword [esp + 0x84], ecx
jmp 0x421a61
mov esi, 0x1000
mov dword [esp + 0x28], 0
jmp 0x4219f6
mov edi, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [ecx + edi]
imul ebx, esi
add eax, ebx
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x78]
test ecx, ecx
jne 0x421aea
cmp edi, 8
je 0x421ad2
cmp edi, 0x18
jne 0x421aea
shr edx, 0xc
cmp edx, 0xff
jbe 0x421a87
mov edx, 0xff
shr eax, 0xc
cmp eax, 0xff
jbe 0x421a96
mov eax, 0xff
mov ecx, dword [esp + 0x84]
shr ecx, 0xc
cmp ecx, 0xff
mov dword [esp + 0x84], ecx
jbe 0x421aba
mov dword [esp + 0x84], 0xff
mov esi, dword [esp + 0x18]
mov byte [esi + ebp + 1], al
mov al, byte [esp + 0x84]
mov byte [esi + ebp], dl
mov byte [esi + ebp + 2], al
jmp 0x421aee
shr eax, 0xc
cmp eax, 0xff
jbe 0x421ae1
mov eax, 0xff
mov esi, dword [esp + 0x18]
mov byte [esi + ebp], al
jmp 0x421aee
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
lea eax, [ecx - 1]
mov ecx, dword [esp + 0x3c]
imul eax, ecx
cmp ebp, eax
jae 0x421b30
add ebp, ecx
cmp edi, 8
je 0x421b25
cmp edi, 0x18
jne 0x421b2c
mov dl, byte [esi + ebp - 3]
mov byte [esi + ebp], dl
mov dl, byte [esi + ebp - 2]
mov byte [esi + ebp + 1], dl
mov dl, byte [esi + ebp - 1]
mov byte [esi + ebp + 2], dl
jmp 0x421b2c
mov dl, byte [esi + ebp - 1]
mov byte [esi + ebp], dl
cmp ebp, eax
jb 0x421b00
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x6c]
mov ecx, edx
mov ebx, ecx
add edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebp, dword [esp + 0x30]
mov ecx, ebx
mov ebx, dword [esp + 0x54]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add eax, edx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
inc eax
cmp eax, ecx
mov dword [esp + 0x5c], eax
jb 0x421442
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
push eax
call fcn.004d59c1
push ebx
call fcn.004d59c1
push esi
call fcn.004d59c1
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004d59c1
mov edx, dword [esp + 0x28]
push edx
call fcn.004d59c1
mov eax, dword [esp + 0x74]
add esp, 0x14
test eax, eax
je 0x421c0b
mov eax, dword [esp + 0x14]
push eax
call fcn.004d59c1
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004d59c1
mov edx, dword [esp + 0x1c]
push edx
call fcn.004d59c1
mov eax, dword [esp + 0x2c]
add esp, 8
test eax, eax
je 0x421bf1
push eax
call fcn.004d59c1
add esp, 4
test ebx, ebx
je 0x421bfe
push ebx
call fcn.004d59c1
add esp, 4
test esi, esi
je 0x421c0b
push esi
call fcn.004d59c1
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret