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

Disassembly:
sub esp, 0xc4
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x18]
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x3c], esi
je 0x300d3cc7
cmp dword [eax + 0x78], 4
jne 0x300d3cc7
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], SysStringLen
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
mov byte [esp + 0x2c], 0
mov edx, dword [eax + 0x74]
mov ecx, dword [eax + 0x68]
mov eax, dword [eax + 0x70]
push ebx
push edx
push ebp
mov dword [esp + 0x58], ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.300dfc60
mov ecx, dword [esi + 0x18]
mov bl, byte [ecx + 0x7e]
xor edx, edx
cmp bl, 0x21
sete dl
lea eax, [esp + 0xb4]
push eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x4c], edx
call fcn.300e1a80
mov eax, dword [esp + 0xd4]
cmp eax, ebp
jne 0x300d3929
lea eax, [esi + 0x30]
lea ecx, [esp + 0xb4]
push ecx
push eax
mov edx, ecx
push edx
call fcn.30077fc0
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x1c]
add esp, 0xc
cmp eax, ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0xc], ebp
je 0x300d3968
cmp dword [eax + 0xc], ebp
jbe 0x300d3968
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x1c]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0xc], edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dl, byte [eax + ecx]
inc eax
mov dword [esp + 0x14], eax
mov cl, byte [eax + ecx]
inc eax
mov dword [esp + 0x14], eax
movzx eax, cl
movzx edx, dl
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0x2c]
push edi
xor edi, edi
cmp eax, ebp
mov dword [esp + 0x50], edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], ebp
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], ebp
mov byte [esp + 0x94], 0
je 0x300d39cf
mov eax, dword [eax + 8]
cmp eax, ebp
je 0x300d39cf
mov eax, dword [eax + 0x3e4]
jmp 0x300d39d1
xor eax, eax
push eax
lea ecx, [esp + 0x9c]
push ecx
call fcn.300783d0
add esp, 8
cmp edi, ebp
jne 0x300d3bc5
lea ecx, [esp + 0x14]
call fcn.300e00c0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov al, byte [ecx + esi]
movzx ebx, al
inc ecx
cmp ebx, ebp
mov dword [esp + 0x18], ecx
je 0x300d3ca0
mov eax, ebx
and eax, 8
mov dword [esp + 0x40], eax
je 0x300d3b74
lea eax, [ecx + esi]
add ecx, 2
xor edx, edx
mov dword [esp + 0x18], ecx
mov dh, byte [eax + 1]
mov ecx, dword [esp + 0x54]
mov dl, byte [eax]
push edx
call fcn.300e0cd0
mov edi, eax
cmp edi, ebp
mov dword [esp + 0x5c], edi
je 0x300d3cb8
cmp dword [edi + 0x78], 3
jne 0x300d3cb8
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
test bl, 4
je 0x300d3a85
mov eax, dword [esp + 0x4c]
push eax
lea ecx, [esp + 0xb8]
push ecx
lea ecx, [esp + 0x1c]
call fcn.300dfdb0
mov edx, dword [eax]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x60], edx
test bl, 1
je 0x300d3aaa
lea eax, [ecx + esi]
xor edx, edx
add ecx, 2
mov dword [esp + 0x18], ecx
mov dh, byte [eax + 1]
movzx eax, byte [eax]
movsx edx, dx
or edx, eax
mov dword [esp + 0xa8], edx
xor ebp, ebp
test bl, 2
je 0x300d3acd
lea eax, [ecx + esi]
add ecx, 2
xor edx, edx
mov dword [esp + 0x18], ecx
mov dh, byte [eax + 1]
movzx eax, byte [eax]
movsx edx, dx
or edx, eax
mov dword [esp + 0xac], edx
cmp dword [esp + 0x40], ebp
je 0x300d3bad
lea edx, [ecx + esi]
xor eax, eax
add ecx, 2
mov dword [esp + 0x18], ecx
mov ah, byte [edx + 1]
mov ebp, 0x400
mov dword [esp + 0x3c], 0x44800000
mov al, byte [edx]
mov dword [esp + 0x70], eax
cmp byte [edi + 0x7e], 0x4b
jne 0x300d3b0c
mov ebp, 0x5000
mov dword [esp + 0x3c], 0x46a00000
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x2c]
test eax, eax
je 0x300d3b85
mov eax, dword [eax + 8]
test eax, eax
je 0x300d3b85
mov edx, dword [eax + 0x3e4]
test edx, edx
je 0x300d3b85
mov ecx, edx
call fcn.300f88e0
test al, al
je 0x300d3b7d
fld dword [0x3029673c]
mov eax, dword [esp + 0x70]
test eax, eax
fdiv dword [esp + 0x3c]
fild dword [esp + 0x70]
jge 0x300d3b4f
fadd dword [0x30297938]
mov ecx, dword [esp + 0x18]
fmulp st(1)
mov esi, dword [esp + 0x14]
mov dword [esp + 0xb0], 1
fst dword [esp + 0xa4]
fstp dword [esp + 0x98]
jmp 0x300d3bab
mov edi, dword [esp + 0x5c]
jmp 0x300d3a58
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, 0x10000
cdq
idiv ebp
mov dword [esp + 0xb0], 0
imul eax, dword [esp + 0x70]
mov dword [esp + 0xa4], eax
mov dword [esp + 0x98], eax
xor ebp, ebp
mov al, byte [ecx + esi]
inc ecx
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x14]
movzx edi, al
call fcn.300e00b0
mov dword [esp + 0x6c], ebp
mov ecx, dword [esp + 0x18]
cmp ecx, ebp
jl 0x300d3cb8
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
je 0x300d3be5
add eax, 3
cmp ecx, eax
jg 0x300d3cb8
mov ecx, dword [esp + 0x50]
push ecx
lea ecx, [esp + 0x18]
call fcn.300e00f0
mov edx, dword [esp + 0x48]
push edx
lea ecx, [esp + 0x18]
mov dword [esp + 0x68], eax
call fcn.300e0180
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x10]
cmp eax, ebp
mov byte [esp + 0x94], 0
jbe 0x300d3c3f
mov esi, eax
mov eax, dword [esp + 0x38]
mov cl, byte [eax]
dec esi
inc eax
test cl, cl
mov dword [esp + 0x10], esi
mov dword [esp + 0x38], eax
mov byte [esp + 0x94], 1
jne 0x300d3c3f
mov byte [esp + 0x94], 0
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0xbc]
push eax
lea ecx, [esp + 0xa0]
push ecx
call fcn.30077fc0
mov edx, dword [esp + 0xec]
push edx
lea eax, [esp + 0x68]
push eax
call dword [esp + 0xf0]
add esp, 0x14
test al, al
je 0x300d3cb8
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0xa8]
mov eax, dword [esp + 0x68]
add esi, ecx
mov ecx, dword [esp + 0x6c]
dec edi
inc ecx
inc eax
mov dword [esp + 0xa8], esi
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x68], eax
jmp 0x300d39e2
lea ecx, [esp + 0x14]
call fcn.300e00c0
pop edi
pop ebx
pop esi
mov al, 1
pop ebp
add esp, 0xc4
ret 0xc
pop edi
pop ebx
pop esi
xor al, al
pop ebp
add esp, 0xc4
ret 0xc
pop esi
xor al, al
pop ebp
add esp, 0xc4
ret 0xc