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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, edx
mov esi, ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x10], esi
test edi, edi
jne 0x41c24c
cmp byte [esi], 1
jne 0x41c242
mov cl, byte [esi + 1]
test cl, 2
je 0x41c242
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edi, dword [ebp + 0xc]
cmp edx, ebx
jne 0x41c1ab
cmp eax, edi
jne 0x41c1ad
mov eax, dword [ebp + 0x14]
mov dword [eax], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, edi
jg 0x41c242
jl 0x41c1bd
cmp edx, ebx
jae 0x41c242
test cl, 8
jne 0x41c2c1
add edx, 1
adc eax, 0
cmp edx, ebx
jne 0x41c242
cmp eax, edi
jne 0x41c242
cmp dword [esi + 0x40], 0
jne 0x41c242
mov eax, dword [ebp + 0x14]
and cl, 0xf9
mov byte [esi + 1], cl
mov ecx, dword [esi + 0x74]
mov dword [eax], 0
xor eax, eax
mov word [esi + 0x2a], ax
movzx eax, word [esi + 0x46]
mov edx, eax
inc eax
mov word [esi + 0x46], ax
cmp ax, word [ecx + 0x16]
jb 0x41c210
mov ecx, esi
mov word [esi + 0x46], dx
call fcn.0041c760
jmp 0x41c21d
cmp byte [ecx + 8], 0
jne 0x41c22d
mov ecx, esi
call fcn.0041bf40
test eax, eax
je 0x41c22d
cmp eax, 0x65
je 0x41c242
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, esi
call fcn.0041b4b0
cmp dword [esi + 0x18], ebx
jne 0x41c242
cmp dword [esi + 0x1c], edi
je 0x41c1a2
mov dword [esp + 0x14], 0
jmp 0x41c2ad
mov edx, dword [edi]
cmp word [edx + 8], 0xd
ja 0x41c2a1
mov eax, dword [edi + 4]
movzx ebx, word [eax + 8]
mov eax, dword [edx + 0x10]
mov al, byte [eax]
test al, al
sete cl
test al, al
setne al
lea ecx, [ecx*2 - 1]
lea eax, [eax*2 - 1]
mov byte [edi + 0xc], al
mov byte [edi + 0xd], cl
test bl, 4
je 0x41c28e
mov dword [esp + 0x14], 0x42a690
jmp 0x41c2a9
test bl, 0x19
jne 0x41c2a1
cmp dword [edx + 0x14], 0
mov dword [esp + 0x14], 0x42a8c0
je 0x41c2a9
mov dword [esp + 0x14], 0x42a670
mov byte [edi + 0xb], 0
mov ecx, esi
call fcn.0041bd30
test eax, eax
je 0x41c2d3
cmp eax, 0x10
jne 0x41c6d3
mov eax, dword [ebp + 0x14]
mov dword [eax], 0xffffffff
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, 1
lea edi, [esi + 0x74]
sub edx, dword [ebp + 0x10]
mov dword [esp + 0x34], edx
mov ecx, dword [edi]
xor eax, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], eax
movzx ebx, word [ecx + 0x16]
mov ecx, edx
dec ebx
mov edi, ebx
mov dword [esp + 0x2c], ebx
sar edi, cl
cmp dword [esp + 0x14], 0
mov word [esi + 0x46], di
mov esi, dword [esp + 0x18]
lea eax, [esi + 0x40]
lea edx, [esi + 0x18]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], edx
jne 0x41c428
movzx edx, word [edx]
mov cl, byte [esi + 3]
mov eax, dword [eax]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov byte [esp + 0xf], cl
mov ax, word [eax + edi*2]
mov ch, al
mov cl, ah
movzx eax, dx
movzx ecx, cx
and ecx, eax
add ecx, dword [esi + 0x44]
cmp byte [esp + 0xf], 0
je 0x41c363
cmp byte [ecx], 0x80
jb 0x41c362
mov eax, dword [esi + 0x3c]
inc ecx
cmp ecx, eax
jae 0x41c5db
cmp byte [ecx], 0x80
jae 0x41c354
inc ecx
lea edx, [esp + 0x38]
call fcn.00408fa0
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
cmp ecx, dword [ebp + 0xc]
jg 0x41c3d0
jl 0x41c382
mov edx, dword [ebp + 8]
cmp eax, edx
jae 0x41c3d3
lea edx, [edi + 1]
mov dword [esp + 0x20], edx
cmp edx, ebx
jle 0x41c3e9
mov ebx, dword [esp + 0x1c]
or esi, 0xffffffff
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x10]
cmp byte [eax + 8], 0
jne 0x41c636
mov esi, eax
mov edi, dword [esp + 0x1c]
movzx eax, word [esi + 0x16]
cmp edx, eax
jl 0x41c55a
movzx ecx, byte [esi + 9]
mov eax, dword [esi + 0x38]
mov edx, dword [ecx + eax + 8]
jmp 0x41c572
mov edx, dword [ebp + 8]
cmp ecx, dword [ebp + 0xc]
jl 0x41c40a
jg 0x41c3de
cmp eax, edx
jbe 0x41c40a
mov edx, dword [esp + 0x20]
lea ebx, [edi - 1]
cmp edx, ebx
jg 0x41c3fb
mov eax, dword [esp + 0x2c]
lea edi, [ebx + edx]
mov edx, dword [esp + 0x30]
sar edi, 1
jmp 0x41c332
mov eax, dword [esp + 0x1c]
mov esi, 1
mov dword [esp + 0x1c], eax
jmp 0x41c398
mov ebx, dword [esp + 0x10]
mov word [ebx + 0x46], di
cmp byte [esi + 8], 0
jne 0x41c605
mov ecx, dword [esp + 0x24]
mov edx, edi
mov dword [esp + 0x20], edx
jmp 0x41c3b0
mov eax, dword [eax]
mov ax, word [eax + edi*2]
mov ch, al
mov cl, ah
movzx eax, word [edx]
movzx ecx, cx
and ecx, eax
mov eax, dword [esp + 0x18]
add ecx, dword [esi + 0x44]
movzx eax, byte [eax + 0xb]
movzx edx, byte [ecx]
lea esi, [ecx + 1]
cmp edx, eax
ja 0x41c463
push dword [esp + 0x28]
push esi
push edx
call dword [esp + 0x20]
add esp, 0xc
mov esi, eax
jmp 0x41c51e
mov al, byte [esi]
test al, al
js 0x41c497
and edx, 0x7f
movzx eax, al
shl edx, 7
add edx, eax
mov eax, dword [esp + 0x18]
movzx eax, word [eax + 0xe]
cmp edx, eax
ja 0x41c497
push dword [esp + 0x28]
lea eax, [ecx + 2]
push eax
push edx
call dword [esp + 0x20]
add esp, 0xc
mov esi, eax
jmp 0x41c51e
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
movzx eax, byte [edx + 0xa]
lea esi, [ebx + 0x18]
sub ecx, eax
mov eax, dword [edx + 0x50]
push esi
push ecx
push edx
call eax
mov esi, dword [esi]
add esp, 0xc
cmp esi, 2
jl 0x41c6aa
lea eax, [esi + 0x12]
cdq
push edx
push eax
call fcn.00404e70
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x41c694
mov eax, dword [esp + 0x10]
xor edx, edx
push 0
push ebx
push esi
mov ecx, eax
mov word [eax + 0x46], di
call fcn.0041b780
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov dword [esp + 0x30], eax
and byte [ecx + 1], 0xfb
test eax, eax
jne 0x41c676
push dword [esp + 0x28]
push ebx
push esi
call dword [esp + 0x20]
add esp, 0xc
mov esi, eax
push ebx
call fcn.00405050
mov ebx, dword [esp + 0x30]
add esp, 4
test esi, esi
jns 0x41c52b
lea edx, [edi + 1]
mov dword [esp + 0x20], edx
jmp 0x41c53c
jle 0x41c64e
mov edx, dword [esp + 0x20]
lea ebx, [edi - 1]
mov dword [esp + 0x2c], ebx
cmp edx, ebx
jg 0x41c398
mov esi, dword [esp + 0x18]
lea edi, [ebx + edx]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
sar edi, 1
jmp 0x41c428
mov eax, dword [ecx]
mov ax, word [eax + edx*2]
mov ch, al
mov cl, ah
movzx eax, word [edi]
movzx ecx, cx
and ecx, eax
mov eax, dword [esi + 0x38]
mov edx, dword [ecx + eax]
mov eax, dword [esp + 0x20]
mov esi, dword [ebx + 0xc]
movzx ecx, ax
mov al, byte [ebx + 0x44]
mov word [ebx + 0x46], cx
cmp al, 0x13
jge 0x41c627
and byte [ebx + 1], 0xf9
xor edi, edi
movsx eax, al
mov word [ebx + 0x2a], di
lea edi, [ebx + 0x74]
bswap edx
mov word [ebx + eax*2 + 0x48], cx
movsx ecx, byte [ebx + 0x44]
mov eax, dword [edi]
mov dword [ebx + ecx*4 + 0x78], eax
xor eax, eax
inc byte [ebx + 0x44]
mov ecx, esi
mov word [ebx + 0x46], ax
movzx eax, byte [ebx + 2]
push eax
push ebx
push edi
call fcn.004186e0
add esp, 0xc
test eax, eax
jne 0x41c6cd
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
jmp 0x41c2e2
push 0x53d0b4
push 0xfdc8
push 0x53d048
push 0x53d02c
push 0xb
call fcn.00407720
add esp, 0x14
mov eax, 0xb
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
or byte [ebx + 1], 2
mov dword [ebx + 0x18], eax
xor eax, eax
mov word [ebx + 0x2a], ax
mov eax, dword [ebp + 0x14]
mov dword [ebx + 0x1c], ecx
mov dword [eax], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x53d0b4
push 0xfc2d
jmp 0x41c6b4
mov eax, dword [ebp + 0x14]
mov word [ebx + 0x46], di
mov dword [eax], esi
xor eax, eax
xor ecx, ecx
mov word [ebx + 0x2a], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x14]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov dword [eax], 0
xor eax, eax
mov word [ebx + 0x46], di
cmp byte [ecx + 0xb], al
je 0x41c6cd
push 0x53d0b4
push 0xfe31
jmp 0x41c6b4
push ebx
call fcn.00405050
mov ebx, dword [esp + 0x14]
add esp, 4
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov word [ebx + 0x2a], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [esp + 0x10]
xor ecx, ecx
mov eax, 7
mov word [ebx + 0x2a], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x53d0b4
push 0xfe12
push 0x53d048
push 0x53d02c
push 0xb
call fcn.00407720
add esp, 0x14
mov eax, 0xb
xor ecx, ecx
mov word [ebx + 0x2a], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret