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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x54
cmp dword [ebp + 0x14], 4
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
jne 0x41df6a
cmp dword [ebp + 0x20], 1
jne 0x41df6a
lea eax, [ebx + 0x18]
mov ecx, 4
mov dword [esp + 0x4c], eax
lea edi, [ebx + 0x2c]
xor eax, eax
mov dword [esp + 0x20], eax
nop dword [eax + eax]
mov esi, dword [edi + 0x14]
and esi, 0xfffffffc
cmp esi, 4
cmovb esi, ecx
mov ecx, dword [edi - 0x14]
test ecx, ecx
je 0x41d9bc
cmp esi, dword [edi]
je 0x41d9eb
push 0x8000
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [edi - 0x14], 0
mov dword [edi], 0
test esi, esi
je 0x41df5c
push 4
push 0x1000
push esi
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
je 0x41df5c
mov dword [edi - 0x14], eax
mov eax, dword [esp + 0x20]
mov dword [edi], esi
inc eax
add edi, 4
mov dword [esp + 0x20], eax
mov ecx, 4
cmp eax, 5
jb 0x41d990
mov eax, dword [ebx + 0x18]
lea esi, [ebx + 0x18]
mov dword [ebx + 0x98], eax
lea edi, [ebx + 0xd4]
mov dword [ebx + 0xa8], eax
mov ecx, 0x81
mov dword [ebx + 0x54], 0
xorps xmm0, xmm0
mov dword [ebx + 0x64], 0
mov dword [ebx + 0x78], 0
mov dword [ebx + 0x7c], 0
mov eax, dword [esi + 4]
mov dword [ebx + 0x9c], eax
mov dword [ebx + 0xac], eax
mov dword [ebx + 0x58], 0
mov dword [ebx + 0x68], 0
mov dword [ebx + 0x80], 0
mov dword [ebx + 0x84], 0
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0xa0], eax
mov dword [ebx + 0xb0], eax
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0x6c], 0
mov dword [ebx + 0x88], 0
mov dword [ebx + 0x8c], 0
mov eax, dword [ebx + 0x24]
mov dword [ebx + 0xa4], eax
mov dword [ebx + 0xb4], eax
mov eax, 0x4000400
mov dword [ebx + 0x60], 0
mov dword [ebx + 0x70], 0
mov dword [ebx + 0x90], 0
mov dword [ebx + 0x94], 0
mov dword [ebx + 0xc0], 3
mov dword [ebx + 0xc4], 0
mov dword [ebx + 0xc8], 0
mov dword [ebx + 0xcc], 0
mov dword [ebx + 0xd0], 0
rep stosd dword es:[edi], eax
mov eax, dword [ebx + 0x28]
lea ecx, [ebx + 0x98]
mov dword [ebx + 0xb8], eax
mov dword [ebx + 0xbc], eax
movlpd qword [esp + 0x40], xmm0
movlpd qword [esp + 0x50], xmm0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
call fcn.00402690
test eax, eax
jne 0x41de30
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edx
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebx + 0xc0]
cmp eax, 4
jae 0x41dcdd
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + eax*4]
mov eax, dword [esi + 0xa8]
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edx
mov edi, dword [esi + eax*4 + 0x80]
lea ecx, [esi + eax*4]
lea ebx, [eax + 0x24]
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx]
lea ebx, [esi + ebx*4]
mov dword [esi + eax*4 + 0x80], ecx
mov dword [esi + eax*4 + 0x90], ecx
add esi, 0x4c
mov dword [esp + 0x38], ebx
mov ebx, dword [ebp + 8]
lea eax, [esi + eax*4]
mov esi, dword [eax]
mov dword [esp + 0x30], eax
test esi, esi
je 0x41dbd4
sub edi, ecx
mov edx, esi
mov al, byte [edi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub edx, 1
jne 0x41dbc2
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
lea eax, [edi + 0x15]
cmp dword [ebx + eax*4], 0
lea eax, [ebx + eax*4]
mov dword [esp + 0x34], eax
jne 0x41dca6
mov ecx, dword [edx]
lea eax, [edi - 1]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + edi*4 + 0x2c]
lea ebx, [esp + 0x18]
sub eax, esi
push ebx
push eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
add eax, esi
push eax
push edx
call dword [ecx + 0xc]
mov ebx, dword [ebp + 8]
mov edx, eax
mov ecx, dword [esp + 0x18]
mov dword [ebx + edi*4 + 0x54], eax
test ecx, ecx
je 0x41dc73
add dword [ebx + edi*8 + 0x78], ecx
adc dword [ebx + edi*8 + 0x7c], 0
add esi, ecx
test eax, eax
jne 0x41dc73
cmp esi, 4
jae 0x41dc73
lea eax, [edi - 1]
cmp eax, 2
jae 0x41dc73
mov eax, dword [ebx + edi*4 + 0x2c]
lea ebx, [esp + 0x18]
mov edx, dword [esp + 0x24]
sub eax, esi
push ebx
push eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [edx]
mov eax, dword [eax]
add eax, esi
push eax
push edx
call dword [ecx + 0xc]
mov ebx, dword [ebp + 8]
mov edx, eax
mov ecx, dword [esp + 0x18]
mov dword [ebx + edi*4 + 0x54], eax
test ecx, ecx
jne 0x41dc23
test esi, esi
je 0x41dca6
cmp dword [esp + 0x2c], 2
jae 0x41dca0
mov ecx, dword [esp + 0x30]
mov eax, esi
and eax, 3
mov dword [ecx], eax
cmp esi, 4
jae 0x41dc9e
test edx, edx
jne 0x41dca6
mov eax, dword [esp + 0x34]
mov dword [eax], 1
jmp 0x41dca6
sub esi, eax
mov eax, dword [esp + 0x38]
add dword [eax], esi
mov ecx, dword [ebx + 0xc0]
mov eax, dword [ebx + ecx*4 + 0xa8]
mov edx, dword [ebx + ecx*4 + 0x54]
cmp eax, dword [ebx + ecx*4 + 0x18]
je 0x41de1a
test edx, edx
je 0x41dd7e
cmp dword [esp + 0x20], 0
jne 0x41dd7e
mov dword [esp + 0x20], edx
jmp 0x41dd7e
mov esi, dword [ebx + 0xb8]
mov edi, dword [ebx + 0x28]
sub esi, edi
je 0x41dd3c
mov eax, dword [ebp + 0x18]
add edx, esi
mov dword [esp + 0x10], edx
adc ecx, 0
mov dword [esp + 0x14], ecx
mov edx, dword [eax]
mov dword [esp + 0x38], edx
mov ecx, dword [edx]
lea eax, [esp + 0x40]
push eax
mov eax, SysReAllocStringLen
cmp esi, eax
cmovb eax, esi
push eax
push edi
push edx
call dword [ecx + 0xc]
mov ecx, eax
mov eax, dword [esp + 0x40]
add edi, eax
sub esi, eax
test ecx, ecx
jne 0x41de25
test eax, eax
je 0x41de20
mov edx, dword [esp + 0x38]
test esi, esi
jne 0x41dd00
mov edi, dword [ebx + 0x28]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebx + 0x3c]
test eax, eax
je 0x41dd67
mov eax, dword [eax]
test eax, eax
je 0x41dd67
mov edx, dword [eax]
sub edx, dword [esp + 0x10]
mov eax, dword [eax + 4]
sbb eax, dword [esp + 0x14]
xor esi, esi
cmp esi, eax
jb 0x41dd67
ja 0x41dd65
cmp ecx, edx
jbe 0x41dd67
mov ecx, edx
mov dword [ebx + 0xb8], edi
lea eax, [edi + ecx]
mov dword [ebx + 0xbc], eax
test ecx, ecx
je 0x41de48
mov edi, dword [ebp + 0x24]
test edi, edi
je 0x41ddfb
mov edx, dword [ebx + 0xb8]
xor esi, esi
sub edx, dword [ebx + 0x28]
add edx, dword [esp + 0x10]
mov ecx, edx
adc esi, dword [esp + 0x14]
sub ecx, dword [esp + 0x50]
mov eax, esi
sbb eax, dword [esp + 0x54]
mov dword [esp + 0x3c], eax
jne 0x41ddb2
cmp ecx, 0x1000000
jb 0x41ddfb
mov eax, dword [ebx + 0xb4]
sub eax, dword [ebx + 0xa4]
mov ecx, dword [ebx + 0x90]
sub ecx, eax
mov dword [esp + 0x50], edx
mov eax, dword [ebx + 0x94]
sbb eax, 0
mov dword [esp + 0x54], esi
add ecx, edx
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x50]
adc eax, esi
push ecx
mov dword [esp + 0x60], eax
lea ecx, [esp + 0x5c]
mov eax, dword [edi]
push ecx
push edi
call dword [eax + 0xc]
test eax, eax
jne 0x41df6f
lea ecx, [ebx + 0x98]
call fcn.00402690
test eax, eax
jne 0x41de40
mov ecx, dword [esp + 0x14]
lea esi, [ebx + 0x18]
mov edx, dword [esp + 0x10]
jmp 0x41db60
mov dword [esp + 0x1c], edx
jmp 0x41de48
mov ecx, 0x80004005
mov eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], 1
mov esi, dword [ebx + 0xb8]
mov edi, dword [ebx + 0x28]
sub esi, edi
je 0x41de98
mov eax, dword [ebp + 0x18]
add dword [esp + 0x10], esi
adc dword [esp + 0x14], 0
mov edx, dword [eax]
mov dword [esp + 0x38], edx
mov ecx, dword [edx]
lea eax, [esp + 0x40]
push eax
mov eax, SysReAllocStringLen
cmp esi, eax
cmovb eax, esi
push eax
push edi
push edx
call dword [ecx + 0xc]
mov ecx, eax
mov eax, dword [esp + 0x40]
add edi, eax
sub esi, eax
test ecx, ecx
jne 0x41de25
test eax, eax
je 0x41de20
mov edx, dword [esp + 0x38]
test esi, esi
jne 0x41de67
mov ecx, dword [esp + 0x1c]
test ecx, ecx
mov eax, dword [esp + 0x20]
cmovne eax, ecx
test eax, eax
jne 0x41df6f
cmp byte [ebx + 0x2d8], al
je 0x41df43
cmp dword [ebx + 0xd0], eax
jne 0x41df4e
mov eax, dword [ebx + 0xc0]
test eax, eax
je 0x41ded4
cmp eax, 8
jne 0x41df4e
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x41def2
mov eax, dword [eax]
test eax, eax
je 0x41def2
mov ecx, dword [esp + 0x10]
cmp dword [eax], ecx
jne 0x41df4e
mov ecx, dword [esp + 0x14]
cmp dword [eax + 4], ecx
jne 0x41df4e
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x41df43
mov esi, 0x60
mov edx, 0x90
mov edi, dword [eax + edx - 0x90]
test edi, edi
je 0x41df35
mov ebx, dword [esp + 0x4c]
mov eax, dword [edx + ebx - 0x44]
sub eax, dword [edx + ebx - 0x10]
add eax, dword [edx + ebx]
mov ecx, dword [esi + ebx]
sub ecx, eax
mov eax, dword [esi + ebx + 4]
sbb eax, 0
cmp dword [edi], ecx
jne 0x41df4e
cmp dword [edi + 4], eax
jne 0x41df4e
mov eax, dword [ebp + 0x10]
add esi, 8
add edx, 4
cmp esi, 0x80
jb 0x41df03
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, 0x80070057
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20