Function at 0x43aee0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x88
mov ebx, ecx
mov edi, dword [ebp + 8]
mov dword [edi + 8], 0
mov dword [edi + 4], 0
mov dword [edi], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x30], 0x100000
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0xc0c7c6c5
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x51]
and edx, ecx
add ecx, eax
add ecx, 0x51
add edx, edx
sub ecx, edx
add cl, 0x6b
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x43af40
mov eax, dword [esp + 4]
mov ecx, dword [0x44cf90]
test ecx, ecx
je 0x43afbe
xor edx, edx
mov esi, dword [0x44cf94]
cmp dword [esi + edx*8], 0x3e416e49
je 0x43af90
inc edx
cmp ecx, edx
jne 0x43af80
jmp 0x43afbe
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43afbe
lea eax, [esp + 0x30]
lea edx, [esp + 0x14]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44cf98]
call fcn.0043d020
add esp, 0x24
test eax, eax
js 0x43b672
cmp dword [ebx + 4], 0
je 0x43b600
mov dword [esp + 0x24], ebx
mov eax, dword [ebx + 4]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 4], 0x595d5b44
mov word [esp + 8], 0
mov ecx, 0x90
mov edx, 0x6f
mov esi, ecx
and esi, 0xb0
mov ebx, edx
and ebx, 0x4f
or ebx, esi
xor bl, byte [esp + edx - 0x6b]
xor bl, 0xb0
add bl, 0xd5
mov byte [esp + edx - 0x6b], bl
dec ecx
inc edx
cmp edx, 0x75
jne 0x43b020
mov dword [esp + 0x3c], 0x7fff
cmp eax, 2
je 0x43b059
mov dword [esp + 0x3c], 0
mov eax, 0xfffeffff
je 0x43b065
mov eax, SysReAllocString
mov edx, dword [esp + 4]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x18], eax
cmp edx, eax
mov dword [esp + 0x2c], ecx
mov eax, ecx
sbb eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x24]
jae 0x43b580
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x28], edx
mov ecx, ebx
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x3c]
push edx
call fcn.0043aa90
mov edx, dword [esp + 0x28]
cmp eax, 0xbfffffff
ja 0x43b580
test eax, eax
js 0x43b550
cmp dword [esp + 0x68], 0x1000
jne 0x43b550
test byte [esp + 0x64], 0x66
je 0x43b550
mov esi, dword [esp + 0x48]
cmp dword [esp + 0x30], esi
mov ecx, dword [esp + 0x4c]
mov eax, 0
mov dword [esp + 0x40], ecx
sbb eax, ecx
jae 0x43b25e
mov dword [esp + 4], 0xc0c7c6c5
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x51]
and edx, ecx
add ecx, eax
add ecx, 0x51
add edx, edx
sub ecx, edx
add cl, 0x6b
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x43b130
mov eax, dword [0x44cf90]
test eax, eax
je 0x43b1aa
mov ebx, dword [esp + 4]
xor edx, edx
mov ecx, dword [0x44cf94]
nop
cmp dword [ecx + edx*8], 0x16194952
je 0x43b180
inc edx
cmp eax, edx
jne 0x43b170
jmp 0x43b1aa
mov eax, dword [ecx + edx*8 + 4]
cmp eax, ebx
je 0x43b1aa
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x1c]
push ecx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44cf98]
call fcn.0043d020
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], esi
mov dword [esp + 4], 0xc0c7c6c5
mov dword [esp + 8], 0
xor eax, eax
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x51]
and edx, ecx
add ecx, eax
add ecx, 0x51
add edx, edx
sub ecx, edx
add cl, 0x6b
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x43b1d0
mov eax, dword [esp + 4]
mov ecx, dword [0x44cf90]
test ecx, ecx
je 0x43b24e
xor edx, edx
mov ebx, dword [0x44cf94]
cmp dword [ebx + edx*8], 0x3e416e49
je 0x43b220
inc edx
cmp ecx, edx
jne 0x43b210
jmp 0x43b24e
mov ecx, dword [ebx + edx*8 + 4]
cmp ecx, eax
je 0x43b24e
push 4
push 0x3000
lea eax, [esp + 0x38]
push eax
push 0
lea eax, [esp + 0x24]
push eax
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44cf98]
call fcn.0043d020
add esp, 0x24
test eax, eax
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
js 0x43b580
mov ecx, ebx
lea eax, [esp + 0x78]
push eax
push dword [esp + 0x44]
push esi
push dword [esp + 0x20]
push dword [esp + 0x3c]
push edx
call fcn.0043ad70
test eax, eax
jns 0x43b287
cmp eax, 0x8000000d
jne 0x43b550
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43b550
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x18]
push eax
call fcn.0043b6c0
add esp, 0x18
mov esi, dword [esp + 4]
mov eax, dword [esp + 8]
mov dword [esp + 0x60], eax
cmp esi, eax
je 0x43b52f
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
jmp 0x43b32a
push dword [esp + 0x10]
call fcn.0040cee0
add esp, 4
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x1c]
lea eax, [ebx + eax*8]
mov dword [esp + 0x1c], eax
mov edi, ebx
mov edx, dword [esp + 0x70]
add edi, edx
mov ecx, ebx
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x40]
mov dword [ecx + edx], ebx
mov ebx, edx
mov edx, dword [esp + 0x74]
mov dword [ecx + ebx + 4], edx
add edi, 8
add esi, 4
cmp esi, dword [esp + 0x60]
je 0x43b4f3
mov ebx, dword [esi]
sub ebx, dword [esp + 0x14]
mov edx, ebx
sar edx, 0x1f
add ebx, eax
mov dword [esp + 0x40], ebx
adc edx, dword [esp + 0x2c]
mov dword [esp + 0x74], edx
mov edx, edi
sub edx, ecx
cmp edi, dword [esp + 0x1c]
jne 0x43b309
mov dword [esp + 0x10], ecx
mov dword [esp + 0x70], edx
sar edx, 3
lea eax, [edx + 1]
mov ecx, edx
shr ecx, 1
add ecx, edx
cmp ecx, eax
ja 0x43b367
mov ecx, eax
mov eax, ecx
and eax, 0xfffffff7
mov ebx, ecx
and ebx, 8
mov edx, ecx
mov dword [esp + 0x1c], ecx
or edx, 8
imul edx, ebx
xor ebx, 8
imul ebx, eax
add edx, ebx
push edx
call fcn.0040ced0
add esp, 4
mov ebx, eax
mov edx, dword [esp + 0x10]
test edx, edx
je 0x43b2f0
mov eax, edi
not eax
and eax, edx
mov ecx, edx
not ecx
and ecx, edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
sub ecx, eax
cmp ebx, edx
mov dword [esp + 0x5c], ebx
jbe 0x43b472
lea eax, [edx + ecx]
cmp eax, ebx
jbe 0x43b472
test ecx, ecx
je 0x43b2e0
mov edx, ecx
mov eax, dword [esp + 0x10]
add eax, ecx
dec eax
mov ecx, dword [esp + 0x5c]
add ecx, edx
dec ecx
mov dword [esp + 0x20], edx
and edx, 7
je 0x43b404
neg edx
xor edi, edi
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
dec edi
cmp edx, edi
jne 0x43b3f0
add eax, edi
add ecx, edi
add dword [esp + 0x20], edi
mov edx, dword [esp + 0x38]
sub edx, dword [esp + 0x34]
cmp edx, 0xfffffff8
mov ebx, dword [esp + 0x20]
ja 0x43b2e0
neg ebx
xor edi, edi
nop
nop
nop
movzx edx, byte [eax + edi]
mov byte [ecx + edi], dl
movzx edx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], dl
movzx edx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], dl
movzx edx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], dl
movzx edx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], dl
movzx edx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], dl
movzx edx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], dl
movzx edx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], dl
add edi, 0xfffffff8
cmp ebx, edi
jne 0x43b420
jmp 0x43b2e0
mov dword [esp + 0x20], ecx
shr ecx, 2
mov eax, edx
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, dword [esp + 0x20]
mov eax, ecx
and eax, 0xfffffffc
lea edi, [ebx + eax]
mov dword [esp + 0x34], edi
add eax, edx
mov edx, ecx
and edx, 3
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0x38]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
mov ecx, edi
xor ecx, 2
and ecx, edx
je 0x43b2e0
and edi, 2
movzx edx, byte [eax + edi]
mov byte [ebx + edi], dl
cmp ecx, 1
je 0x43b2e0
movzx edx, byte [eax + edi + 1]
mov byte [ebx + edi + 1], dl
cmp ecx, 2
je 0x43b2e0
movzx eax, byte [eax + edi + 2]
mov byte [ebx + edi + 2], al
jmp 0x43b2e0
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov dword [eax], ecx
mov edx, dword [esp + 0x1c]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x6c]
test eax, eax
mov esi, dword [esp + 0x18]
je 0x43b576
mov dword [esp + 0x10], ecx
cmp eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x24]
je 0x43b554
push eax
call fcn.0040cee0
add esp, 4
mov dword [esp + 4], 0
jmp 0x43b554
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
adc eax, dword [esp + 0x54]
cmp edx, esi
mov dword [esp + 0x2c], eax
sbb eax, dword [esp + 0x3c]
jb 0x43b0a0
jmp 0x43b580
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x24]
jmp 0x43b554
mov dword [esp + 4], 0xc0c7c6c5
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax + 0x51]
and edx, ecx
add ecx, eax
add ecx, 0x51
add edx, edx
sub ecx, edx
add cl, 0x6b
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x43b5a0
mov eax, dword [0x44cf90]
test eax, eax
mov edi, dword [ebp + 8]
je 0x43b672
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0x44cf94]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43b648
inc edx
cmp eax, edx
jne 0x43b5f0
jmp 0x43b672
push 0xbbf966b4
push dword [0x44cf84]
call fcn.00440270
add esp, 8
test eax, eax
je 0x43b67e
mov ecx, dword [ebx]
test ecx, ecx
je 0x43afd0
mov dword [esp + 4], 0
lea edx, [esp + 4]
push edx
push ecx
call eax
test eax, eax
je 0x43b68a
cmp dword [esp + 4], 0
je 0x43b68a
mov dword [ebx + 4], 3
jmp 0x43afd0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43b672
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44cf98]
call fcn.0043d020
add esp, 0x1c
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [ebx + 4], 1
jmp 0x43afd0
lea eax, [esp + 0x50]
push eax
call fcn.00440a80
add esp, 4
test al, al
je 0x43afd0
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0x43b6af
mov ecx, eax
mov dword [ebx + 4], ecx
jmp 0x43afd0