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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov eax, dword [esp + 0x40]
movzx eax, word [eax]
mov dword [esp], 0xb9ba5577
mov byte [esp + 4], 0
xor ecx, ecx
nop
nop
nop
nop
movzx esi, byte [esp + ecx]
mov edi, ecx
and edi, 1
xor edi, 0xaa58b6a1
mov edx, ecx
and edx, 6
sub edx, edi
xor edx, esi
lea esi, [edx + edx]
and esi, 2
mov edi, esi
and edi, edx
xor edx, 1
add edx, 0x24
or edx, esi
add edx, edi
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 5
jne case.default.0x44509f
xor ecx, ecx
cmp dword [esp], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x4508dc]
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + ecx]
mov dword [esp], 0xb9bac0f4
mov byte [esp + 4], 0
xor edx, edx
nop
nop
movzx esi, byte [esp + edx]
mov edi, edx
and edi, 1
xor edi, 0xa7a13b61
mov ebx, edx
and ebx, 6
sub ebx, edi
xor ebx, esi
mov esi, ebx
and esi, 1
xor ebx, 1
lea ebx, [ebx + esi*2]
add bl, 0xe4
mov byte [esp + edx], bl
inc edx
cmp edx, 5
jne case.default.0x4450f9
xor edx, edx
cmp eax, dword [esp]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x4508e4]
mov edx, dword [esp + 0x40]
mov edi, dword [edx + ecx + 0x78]
mov esi, dword [edx + ecx + 0x7c]
test esi, esi
sete cl
test edi, edi
sete dl
or dl, cl
movzx ecx, dl
mov dword [esp + 0x20], edi
jmp dword [ecx*4 + 0x4508ec]
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + edi + 0x20]
add ecx, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + edi + 0x24]
add ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + edi + 0x1c]
add ecx, eax
mov dword [esp + 0x14], ecx
mov edx, dword [eax + edi + 0x18]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x24], edx
cmp ecx, edx
setb al
mov dword [esp + 0x1c], 1
jmp dword [eax*4 + 0x4508f4]
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], ecx
mov esi, dword [eax + ecx*4]
add esi, dword [esp + 0x40]
mov edx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
cmp byte [esi + edx + 1], 0
lea edx, [edx + 1]
lea eax, [eax + 1]
jne 0x445190
mov dword [esp], 0x2020093
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx]
mov eax, ecx
xor eax, 0x80
mov ebp, ecx
and ebp, ebx
add eax, ebx
add ebp, ebp
sub eax, ebp
add al, 0x80
mov byte [esp + ecx], al
inc ecx
cmp ecx, 4
jne 0x4451b0
test edx, edx
je 0x4451f0
mov ebx, dword [esp]
mov eax, ebx
not eax
cmp edx, 1
jne 0x445200
mov ecx, 0xfb520141
test dl, 1
jne 0x445260
jmp 0x44527d
mov ecx, 0xfb520141
jmp 0x44527d
and edi, 0xfffffffe
mov ecx, 0xfb520141
mov dword [esp + 8], eax
nop
nop
nop
nop
movsx eax, byte [esi]
xor eax, ecx
mov ecx, eax
and ecx, dword [esp + 8]
mov ebp, eax
not ebp
and ebp, ebx
imul ebp, ecx
mov ecx, eax
and ecx, ebx
or eax, ebx
imul eax, ecx
add eax, ebp
movsx ecx, byte [esi + 1]
add esi, 2
xor ecx, eax
mov eax, ecx
and eax, dword [esp + 8]
mov ebp, ecx
not ebp
and ebp, ebx
imul ebp, eax
mov eax, ecx
and eax, ebx
or ecx, ebx
imul ecx, eax
add ecx, ebp
add edi, 0xfffffffe
jne 0x445210
mov eax, dword [esp + 8]
test dl, 1
je 0x44527d
mov edx, eax
movsx eax, byte [esi]
xor ecx, eax
and edx, ecx
mov eax, ecx
not eax
and eax, ebx
imul eax, edx
mov edx, ecx
and edx, ebx
or ecx, ebx
imul ecx, edx
add ecx, eax
xor eax, eax
cmp ecx, dword [esp + 0x44]
setne al
jmp dword [eax*4 + 0x4508fc]
mov ecx, dword [esp + 0x1c]
jmp dword [ecx*4 + 0x450934]
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret