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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
cmp dword [esp + 0x74], 4
jbe 0x421500
mov eax, dword [esp + 0x78]
movzx eax, word [eax]
test eax, eax
mov dword [esp + 0x50], eax
je 0x421510
lea ecx, [eax - 1]
mov eax, 4
shl eax, cl
add eax, 4
mov edx, dword [esp + 0x94]
add eax, dword [esp + 0x78]
mov edi, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
sub edx, 1
add esi, 4
add edi, edx
mov dword [esp + 0x4c], eax
mov ebp, esi
mov dword [esp + 0x48], esi
mov esi, eax
movzx eax, byte [edi]
add edx, dword [esp + 0x84]
lea ebx, [esi + eax*8]
mov dword [esp + 4], edx
mov esi, dword [ebx + 4]
lea ecx, [esi + 0x8000]
mov eax, ecx
shr ecx, 0x10
xor ax, ax
sub eax, esi
sar eax, cl
add eax, dword [ebx]
movzx eax, word [ebp + eax*2]
mov dword [esp + 0x18], eax
movzx eax, byte [edx]
mov edx, dword [esp + 0x80]
movzx edx, word [edx]
mov ebx, edx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x80]
add edx, 4
test ebx, ebx
mov dword [esp + 0x3c], edx
mov edx, 8
je 0x421281
lea ecx, [ebx - 1]
mov edx, 4
shl edx, cl
add edx, 4
add edx, dword [esp + 0x80]
mov dword [esp + 0x44], edx
lea edx, [edx + eax*8]
mov ebx, dword [edx + 4]
lea ecx, [ebx + 0x8000]
mov eax, ecx
shr ecx, 0x10
xor ax, ax
sub eax, ebx
sar eax, cl
add eax, dword [edx]
mov edx, dword [esp + 0x3c]
movzx eax, word [edx + eax*2]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x8c]
movzx edx, byte [eax + edx - 1]
mov eax, dword [esp + 0x88]
movzx eax, word [eax]
mov esi, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x88]
add eax, 4
test esi, esi
mov dword [esp + 0x38], eax
mov eax, 8
je 0x4212f9
lea ecx, [esi - 1]
mov eax, 4
shl eax, cl
add eax, 4
add eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
mov ebp, dword [esp + 0x90]
lea esi, [esi + ebx - 4]
lea ebx, [eax + edx*8]
mov dword [esp + 0x40], eax
mov dword [esp], esi
mov esi, dword [ebx + 4]
lea ecx, [esi + 0x8000]
mov eax, ecx
shr ecx, 0x10
xor ax, ax
sub eax, esi
movzx esi, byte [edx + str.m4b9]
mov edx, dword [esp]
sar eax, cl
add eax, dword [ebx]
mov ebx, dword [esp + 0x38]
mov ecx, esi
movzx eax, word [ebx + eax*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x94]
lea eax, [eax*8 - 8]
add ebp, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x70]
movzx ebx, word [ebp + 4]
and ebx, dword [esi*4 + 0x4f9980]
shr esi, 3
mov dword [eax], ebx
mov eax, dword [esp + 0x70]
add eax, esi
cmp edx, eax
cmovb eax, edx
and ecx, 7
movzx edx, cl
mov dword [esp + 8], edx
movzx edx, byte [edi]
movzx edi, word [ebp + 6]
movzx edx, byte [edx + 0x4f9900]
and edi, dword [edx*4 + 0x4f9980]
add edx, dword [esp + 8]
shl edi, cl
lea ecx, [esi*8]
shr ebx, cl
mov ecx, edx
or edi, ebx
mov ebx, dword [esp]
shr ecx, 3
mov dword [eax], edi
add eax, ecx
cmp ebx, eax
cmovbe eax, ebx
shl ecx, 3
and edx, 7
shr edi, cl
mov ecx, dword [esp + 0x98]
mov esi, eax
mov eax, dword [esp + 4]
test ecx, ecx
movzx eax, byte [eax]
je 0x421520
cmp eax, 0x17
jbe 0x421840
mov ecx, dword [ebp]
mov ebx, eax
sub ebx, 0x18
mov dword [esp + 4], ecx
mov ebp, ecx
je 0x42184b
and ecx, dword [ebx*4 + 0x4f9980]
mov ebp, ecx
mov ecx, edx
add edx, ebx
shl ebp, cl
mov ecx, edx
or edi, ebp
mov ebp, dword [esp]
shr ecx, 3
mov dword [esi], edi
add esi, ecx
cmp ebp, esi
cmovbe esi, ebp
shl ecx, 3
and edx, 7
shr edi, cl
mov ebp, dword [esp + 4]
jmp 0x42184b
mov ebp, dword [esp + 0x28]
mov edi, esi
mov esi, edx
mov edx, ebx
mov eax, dword [esp + 0x50]
mov ecx, esi
and ebp, dword [eax*4 + 0x4f9980]
add eax, esi
mov esi, dword [esp + 0x20]
mov ebx, eax
shr ebx, 3
shl ebp, cl
or ebp, dword [esp + 0x24]
mov ecx, dword [esp]
mov dword [esi], ebp
add esi, ebx
cmp ecx, esi
cmovbe esi, ecx
mov ecx, dword [esp + 0x58]
and eax, 7
and edx, dword [ecx*4 + 0x4f9980]
mov ecx, eax
add eax, dword [esp + 0x58]
shl edx, cl
lea ecx, [ebx*8]
mov ebx, eax
shr ebx, 3
shr ebp, cl
mov ecx, dword [esp + 0x54]
or edx, ebp
mov ebp, dword [esp]
mov dword [esi], edx
add esi, ebx
cmp ebp, esi
cmovbe esi, ebp
and edi, dword [ecx*4 + 0x4f9980]
and eax, 7
mov ecx, eax
add eax, dword [esp + 0x54]
shl edi, cl
lea ecx, [ebx*8]
shr edx, cl
mov ecx, eax
or edi, edx
shr ecx, 3
mov edx, 1
mov dword [esi], edi
add esi, ecx
cmp ebp, esi
cmovbe esi, ebp
and eax, 7
shl ecx, 3
lea ebx, [eax + 1]
shr edi, cl
mov ecx, eax
shl edx, cl
mov eax, ebx
or edi, edx
shr eax, 3
mov dword [esi], edi
add eax, esi
cmp ebp, eax
jb 0x421500
and ebx, 7
cmp ebp, eax
jbe 0x421500
sub eax, dword [esp + 0x70]
xor edx, edx
test ebx, ebx
setne dl
add eax, edx
jne 0x421505
nop
mov eax, 0xffffffba
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 8
jmp 0x4211f2
mov ebp, dword [ebp]
and ebp, dword [eax*4 + 0x4f9980]
mov ecx, edx
add eax, edx
mov edx, ebx
shl ebp, cl
or ebp, edi
mov ecx, eax
mov dword [esi], ebp
shr ecx, 3
add esi, ecx
cmp edx, esi
cmovbe esi, edx
and eax, 7
shl ecx, 3
mov dword [esp + 0x20], esi
mov esi, eax
mov eax, dword [esp + 0x94]
shr ebp, cl
mov dword [esp + 0x24], ebp
add eax, 0xfffffffe
mov edx, eax
jae 0x421868
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x90]
lea eax, [eax + ebx - 8]
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], edx
mov edx, esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 4], eax
jmp 0x42160e
cmp dword [esp + 0x1c], 0x17
ja 0x421800
mov ebx, dword [ebp]
xor esi, esi
mov ebp, dword [esp + 0x1c]
mov ecx, esi
shr ebx, cl
mov ecx, edx
sub ebp, esi
and ebx, dword [ebp*4 + 0x4f9980]
add edx, ebp
shl ebx, cl
or edi, ebx
mov ebx, dword [esp]
mov ecx, edx
mov dword [eax], edi
shr ecx, 3
mov esi, dword [esp + 0x18]
add eax, ecx
cmp ebx, eax
cmovbe eax, ebx
shl ecx, 3
sub dword [esp + 0xc], 1
shr edi, cl
mov dword [esp + 0x20], eax
and edx, 7
mov eax, dword [esp + 0xc]
sub dword [esp + 0x10], 8
cmp dword [esp + 0x94], eax
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x24], edi
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x2c]
jbe 0x421430
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
movzx eax, byte [ecx + esi]
movzx edi, byte [edi + esi]
mov dword [esp + 0x34], eax
movzx eax, byte [eax + str.m4b9]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x30], eax
movzx eax, byte [ebp + esi]
movzx esi, byte [eax + 0x4f9900]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x44]
lea esi, [esi + edi*8]
mov edi, dword [esi + 4]
add edi, ebx
mov ebp, edi
shr ebp, 0x10
lea edi, [ebp + edx]
mov ecx, ebp
mov dword [esp + 0x18], edi
mov edi, ebx
and ebx, dword [ebp*4 + 0x4f9980]
sar edi, cl
mov ecx, dword [esi]
mov esi, dword [esp + 0x3c]
add ecx, edi
mov edi, dword [esp + 4]
movzx esi, word [esi + ecx*2]
movzx ecx, byte [esp + 0x18]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x4c]
lea esi, [esi + eax*8]
mov eax, dword [esi + 4]
add eax, edi
shr eax, 0x10
and edi, dword [eax*4 + 0x4f9980]
shl edi, cl
mov ecx, edx
mov edx, dword [esp + 0x18]
shl ebx, cl
mov ecx, eax
or edi, ebx
mov ebx, dword [esp + 0x24]
add edx, eax
mov eax, dword [esi]
mov esi, edx
or ebx, edi
mov edi, dword [esp + 4]
shr esi, 3
sar edi, cl
add eax, edi
mov edi, dword [esp + 0x48]
movzx edi, word [edi + eax*2]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x34]
mov dword [esp + 4], ebx
lea eax, [edi + esi]
mov dword [edi], ebx
mov edi, dword [esp]
lea ebp, [ecx + ebp*8]
cmp edi, eax
mov ebx, dword [ebp + 4]
cmovbe eax, edi
mov edi, dword [esp + 8]
and edx, 7
mov ecx, edx
add ebx, edi
shr ebx, 0x10
and edi, dword [ebx*4 + 0x4f9980]
add edx, ebx
shl edi, cl
lea ecx, [esi*8]
mov esi, dword [esp + 4]
shr esi, cl
mov ecx, ebx
mov ebx, edx
or edi, esi
mov esi, dword [esp + 8]
shr ebx, 3
sar esi, cl
mov ecx, dword [ebp]
mov ebp, dword [esp + 0x38]
add ecx, esi
mov esi, dword [esp]
movzx ebp, word [ebp + ecx*2]
mov dword [eax], edi
add eax, ebx
cmp esi, eax
cmovbe eax, esi
and edx, 7
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x10]
mov ecx, edx
movzx esi, word [ebp + 4]
mov ebp, dword [esp + 0x30]
and esi, dword [ebp*4 + 0x4f9980]
add edx, ebp
shl esi, cl
lea ecx, [ebx*8]
shr edi, cl
mov ecx, ebp
add ecx, dword [esp + 0x14]
or esi, edi
cmp ecx, 0x18
ja 0x4217e0
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov ecx, edx
movzx edi, word [ebp + 6]
add edx, ebx
and edi, dword [ebx*4 + 0x4f9980]
mov ebx, dword [esp]
shl edi, cl
mov ecx, edx
or edi, esi
shr ecx, 3
mov dword [eax], edi
add eax, ecx
cmp ebx, eax
cmovbe eax, ebx
shl ecx, 3
and edx, 7
shr edi, cl
mov ecx, dword [esp + 0x98]
test ecx, ecx
jne 0x421595
mov ebx, dword [esp + 0x1c]
mov esi, dword [ebp]
mov ecx, edx
and esi, dword [ebx*4 + 0x4f9980]
add edx, ebx
shl esi, cl
or edi, esi
jmp 0x4215be
mov ecx, edx
mov ebx, dword [esp]
mov dword [eax], esi
shr ecx, 3
add eax, ecx
cmp ebx, eax
cmovbe eax, ebx
shl ecx, 3
and edx, 7
shr esi, cl
jmp 0x42177d
mov esi, dword [esp + 0x1c]
mov ebx, dword [ebp]
sub esi, 0x18
je 0x4215a5
mov ebp, dword [esi*4 + 0x4f9980]
mov ecx, edx
add edx, esi
and ebp, ebx
shl ebp, cl
mov ecx, edx
or edi, ebp
mov ebp, dword [esp]
shr ecx, 3
mov dword [eax], edi
add eax, ecx
cmp ebp, eax
cmovbe eax, ebp
shl ecx, 3
and edx, 7
shr edi, cl
jmp 0x4215a5
mov ecx, dword [ebp]
xor ebx, ebx
mov dword [esp + 4], ecx
mov ebp, ecx
sub eax, ebx
mov ecx, ebx
shr ebp, cl
and ebp, dword [eax*4 + 0x4f9980]
mov ecx, edx
add eax, edx
mov edx, dword [esp]
shl ebp, cl
or ebp, edi
jmp 0x421534
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
jmp 0x42143a