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

Disassembly:
sub esp, 0x54
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
push ebx
mov dword [esp + 0x40], eax
mov ebx, 0x20
mov eax, dword [esp + 0x64]
push ebp
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x20], ebx
push esi
push edi
test eax, eax
jle 0x499529
mov ecx, eax
mov edi, edx
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x6c]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
cmp ecx, 3
jne 0x49953d
lea esi, [ecx - 2]
jmp 0x499544
mov esi, 0x20
sar esi, cl
xor dl, dl
mov dword [esp + 0x18], esi
mov byte [esp + 0x13], dl
mov ebp, ecx
mov dword [esp + 0x44], ebp
cmp ecx, eax
jge 0x49973d
mov eax, esi
mov edx, esi
shl eax, 8
neg edx
mov dword [esp + 0x60], eax
lea eax, [esi*4]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x58], eax
mov eax, ecx
shl eax, 8
add edi, eax
shl edx, 8
sub esi, eax
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x78]
add eax, 0x10
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], esi
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
jmp 0x4995b0
mov edi, dword [esp + 0x74]
cmp dword [edi + ebp*4], 0xffffffff
mov edi, dword [esp + 0x1c]
jne 0x49970b
test ebp, ebp
jle 0x4995e8
mov eax, dword [esp + 0x78]
dec eax
cmp ebp, eax
jge 0x4995e8
mov eax, dword [esp + 0x74]
cmp dword [eax + ebp*4 - 4], 0
jne 0x4995e8
cmp dword [eax + ebp*4 + 4], 0
jne 0x4995e8
xor ecx, ecx
jmp 0x4996ec
mov eax, dword [ecx]
xor esi, esi
mov dword [esp + 0x54], eax
mov edx, 0x400
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x14], 1
cmp ebx, 1
jl 0x4996d1
mov ecx, dword [esp + 0x24]
lea eax, [ebx + ebx]
sub ecx, eax
mov dword [esp + 0x50], ecx
jmp 0x499620
mov eax, ecx
mov dword [esp + 0x30], edi
mov edx, 4
mov dword [esp + 0x34], eax
xor ebx, ebx
mov dword [esp + 0x38], edx
mov ecx, edi
mov esi, ecx
cmp eax, 8
jle 0x499643
mov eax, 8
lea ebp, [ecx + eax]
cmp ecx, ebp
jae 0x499685
mov eax, dword [esp + 0x14]
lea edi, [ecx + eax]
mov al, byte [edi + eax]
mov dl, byte [edi]
sub al, dl
sub dl, byte [esi]
movsx ecx, al
movsx eax, dl
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jl 0x499671
mov eax, 0x20
add ebx, eax
inc esi
mov eax, dword [esp + 0x14]
inc edi
cmp esi, ebp
jb 0x499651
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
add ecx, 0x40
sub eax, 0x40
mov dword [esp + 0x30], ecx
sub edx, 1
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
jne 0x499637
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
cmp ebx, edx
jge 0x49976a
mov esi, eax
mov edx, ebx
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], edx
cmp ebx, 0x10
jge 0x49976e
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
imul edx, dword [esp + 0x54]
xor ecx, ecx
mov eax, dword [esp + 0x74]
cmp edx, 0xc000
setge cl
dec ecx
and ecx, esi
mov esi, dword [esp + 0x24]
mov dword [eax + ebp*4], ecx
mov eax, ebx
cdq
sub eax, edx
mov edx, dword [esp + 0x78]
sar eax, 1
cmp ecx, eax
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
jle 0x49970b
mov byte [esp + 0x13], 1
add ecx, dword [esp + 0x58]
add ebp, eax
add esi, dword [esp + 0x5c]
add edi, dword [esp + 0x60]
mov dword [esp + 0x44], ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], edi
cmp ebp, edx
jl 0x4995b0
mov dl, byte [esp + 0x13]
mov ecx, dword [esp + 0x2c]
test dl, dl
jne 0x49974a
mov eax, ebx
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x78]
inc ecx
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x2c], ecx
cmp ecx, 4
jl 0x499533
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 0x14
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x28]
inc eax
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
cmp eax, ebx
jle 0x499620
jmp 0x4996c9