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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x44
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x40]
push edi
mov edi, dword [eax]
mov dword [esp + 0x1c], ecx
sar ecx, 5
lea eax, [esi + 0x40]
add ecx, 4
mov dword [esp + 0x18], edi
push ecx
shl edi, 4
lea ecx, [esp + 0x40]
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], eax
add edi, edx
call fcn.005f9d70
movzx ebx, word [edi + 8]
movzx ecx, word [edi + 0xa]
mov edx, dword [esi + 0x4c]
shl ebx, 2
movzx eax, word [ebx + edx]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x3c]
sar ecx, 7
test ecx, ecx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], eax
jl 0x5faf37
inc ecx
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0x2c]
mov ecx, edx
add ecx, 0x10
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ecx
dec dword [esp + 0x30]
jne 0x5faf17
mov edx, dword [esi + 0x4c]
mov ecx, dword [esi + 0x70]
add edx, 4
test ecx, ecx
je 0x5fb04f
mov ebx, dword [esi + 0x74]
mov ecx, 0x10
sub ecx, ebx
mov ebx, dword [esp + 0x28]
sar ebx, cl
mov ecx, ebx
test ecx, ecx
jle 0x5fb04b
mov edx, dword [esi + 0x78]
shl ecx, 4
lea ecx, [ecx + edx - 0x10]
mov dword [esp + 0x28], ecx
movzx ecx, word [ecx]
mov edx, ecx
and ecx, 0x1f
sar edx, 5
mov ebx, 1
shl ebx, cl
xor dword [eax + edx*4], ebx
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 4]
mov dword [esp + 0x2c], ecx
mov ecx, dword [edx + 8]
dec ecx
js 0x5fafd3
inc ecx
mov dword [esp + 0x30], ecx
jmp 0x5fafa0
mov edx, dword [esp + 0x2c]
movzx ecx, word [edx]
mov edx, ecx
and ecx, 0x1f
sar edx, 5
mov ebx, 1
shl ebx, cl
xor dword [eax + edx*4], ebx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
add edx, 2
dec ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], ecx
jne 0x5fafa0
mov edx, dword [esp + 0x28]
movzx ecx, word [edx]
mov edx, dword [esp + 0x20]
mov ebx, dword [edx]
mov edx, dword [esi + 0x4c]
shl ecx, 4
add ecx, ebx
movzx ebx, word [ecx + 8]
lea ebx, [edx + ebx*4 + 4]
mov dword [esp + 0x2c], ebx
movzx ebx, word [ecx + 0xa]
lea ebx, [edx + ebx*4]
mov edx, dword [esp + 0x2c]
cmp edx, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ebx
jae 0x5fb040
test byte [edx], 1
jne 0x5fb035
movzx ecx, word [edx + 2]
mov edx, ecx
and ecx, 0x1f
mov ebx, 1
shl ebx, cl
sar edx, 5
mov ecx, dword [eax + edx*4]
not ebx
and ecx, ebx
mov ebx, dword [esp + 0x30]
mov dword [eax + edx*4], ecx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
add edx, 4
cmp edx, ebx
mov dword [esp + 0x2c], edx
jb 0x5fb007
movzx ecx, word [ecx + 8]
mov edx, dword [esi + 0x4c]
lea edx, [edx + ecx*4 + 4]
mov ebx, dword [esp + 0x34]
mov ecx, dword [esi + 0x4c]
add ecx, ebx
cmp edx, ecx
mov dword [esp + 0x2c], ecx
jae 0x5fb088
lea esp, [esp]
movzx ecx, word [edx + 2]
mov esi, ecx
and ecx, 0x1f
mov ebx, 1
shl ebx, cl
sar esi, 5
mov ecx, dword [eax + esi*4]
add edx, 4
xor ecx, ebx
mov dword [eax + esi*4], ecx
cmp edx, dword [esp + 0x2c]
jb 0x5fb060
mov esi, dword [esp + 0x24]
mov ecx, dword [esi + 0x4c]
mov ebx, dword [esp + 0x38]
lea ecx, [ecx + ebx*4]
add edx, 4
cmp edx, ecx
mov dword [esp + 0x2c], ecx
jae 0x5fb0ca
lea ecx, [ecx]
test byte [edx], 1
jne 0x5fb0c3
movzx ecx, word [edx + 2]
mov esi, ecx
and ecx, 0x1f
sar esi, 5
mov ebx, 1
shl ebx, cl
xor dword [eax + esi*4], ebx
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
add edx, 4
cmp edx, ecx
jb 0x5fb0a0
mov edx, dword [esp + 0x20]
mov edx, dword [edx]
mov dword [esp + 0x30], edx
mov edx, dword [esi + 0x44]
sar edx, 5
lea ebx, [eax + edx*4 + 4]
cmp eax, ebx
mov ecx, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], ebx
jae 0x5fb201
mov edx, dword [ecx]
test edx, edx
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], edx
je 0x5fb1e5
test dl, dl
jne 0x5fb117
add eax, 0x80
shr edx, 8
jmp 0x5fb1cd
test dl, 1
je 0x5fb1c8
mov ebx, dword [edi]
mov ecx, dword [eax + 4]
sub ecx, ebx
mov ebx, dword [edi + 4]
sub ebx, dword [eax]
or ecx, ebx
test ecx, 0x80008000
jne 0x5fb1c8
mov ebx, dword [eax + 0xc]
test bl, 1
jne 0x5fb17c
mov esi, dword [ebp + 0xc]
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
and edx, 0x7fffffff
cmp eax, edx
jne 0x5fb160
push 8
push esi
call fcn.0054d2c0
add esp, 8
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edx, dword [ebp + 8]
mov dword [ecx + eax*8], edx
mov edx, dword [esp + 0x28]
mov dword [ecx + eax*8 + 4], ebx
inc dword [esi + 4]
mov esi, dword [esp + 0x24]
jmp 0x5fb1c4
mov eax, dword [esi + 0x78]
and ebx, 0xfffffffe
mov ecx, dword [ebx + eax + 8]
add ebx, eax
xor eax, eax
test ecx, ecx
jle 0x5fb1af
mov esi, dword [ebx + 4]
mov dx, word [esp + 0x18]
cmp word [esi], dx
je 0x5fb2e2
inc eax
add esi, 2
cmp eax, ecx
jl 0x5fb191
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
or eax, 0xffffffff
mov ecx, dword [ebx + 8]
dec ecx
mov dword [ebx + 8], ecx
mov ebx, dword [ebx + 4]
mov cx, word [ebx + ecx*2]
mov word [ebx + eax*2], cx
mov eax, dword [esp + 0x2c]
add eax, 0x10
shr edx, 1
test edx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], edx
jne 0x5fb106
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
add ecx, 4
add eax, 0x200
cmp ecx, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
jb 0x5fb0f0
lea ecx, [esp + 0x3c]
call fcn.0053bb70
movzx eax, word [edi + 0xa]
movzx ecx, word [edi + 8]
mov edx, dword [esp + 0x20]
mov ebx, dword [edx]
push eax
push ecx
lea ecx, [esi + 0x4c]
call fcn.005f8120
movzx edx, word [edi + 4]
movzx eax, word [edi]
push edx
lea ecx, [esi + 0x58]
push eax
call fcn.005f8120
movzx edx, word [edi + 6]
movzx eax, word [edi + 2]
push edx
lea ecx, [esi + 0x64]
push eax
call fcn.005f8120
mov ecx, dword [esp + 0x1c]
push edi
push ecx
push ebx
mov ecx, esi
call fcn.005f7d90
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
dec edx
cmp ebx, edx
jae 0x5fb3d9
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
mov eax, dword [esp + 0x1c]
shl eax, 4
lea eax, [eax + edx - 0x10]
mov edx, dword [eax]
mov ecx, edi
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
movzx ecx, word [edi + 8]
mov edx, dword [esi + 0x4c]
mov word [edx + ecx*4 + 2], bx
movzx eax, word [edi + 0xa]
mov ecx, dword [esi + 0x4c]
mov word [ecx + eax*4 + 2], bx
mov eax, dword [edi + 0xc]
test al, 1
jne 0x5fb2ef
movzx edx, word [edi]
mov eax, dword [esi + 0x58]
mov word [eax + edx*4 + 2], bx
movzx ecx, word [edi + 4]
mov edx, dword [esi + 0x58]
mov word [edx + ecx*4 + 2], bx
movzx eax, word [edi + 2]
mov ecx, dword [esi + 0x64]
mov word [ecx + eax*4 + 2], bx
movzx edx, word [edi + 6]
mov eax, dword [esi + 0x64]
mov word [eax + edx*4 + 2], bx
mov ecx, dword [edi + 0xc]
mov dword [ecx], ebx
jmp 0x5fb2f9
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
jmp 0x5fb1b2
mov edx, dword [esi + 0x78]
and eax, 0xfffffffe
mov word [eax + edx], bx
mov eax, dword [esi + 0x70]
test eax, eax
je 0x5fb3d9
test byte [edi + 0xc], 1
jne 0x5fb3d9
mov dx, word [edi + 8]
mov eax, dword [esi + 0x4c]
mov cx, 0x10
sub cx, word [esi + 0x74]
mov dword [esp + 0x38], eax
movzx ecx, cx
mov dword [esp + 0x34], ecx
movzx ecx, dx
movzx eax, word [eax + ecx*4]
mov cl, byte [esp + 0x34]
shr eax, cl
test eax, eax
jle 0x5fb35b
mov ebx, dword [esi + 0x78]
mov ecx, eax
shl ecx, 4
movzx ecx, word [ecx + ebx - 0x10]
mov ebx, dword [esp + 0x20]
mov ebx, dword [ebx]
shl ecx, 4
cmp word [ecx + ebx + 0xa], dx
mov ebx, dword [esp + 0x18]
jbe 0x5fb35b
dec eax
movzx edx, word [edi + 0xa]
mov ecx, dword [esp + 0x38]
movzx edx, word [ecx + edx*4]
mov cl, byte [esp + 0x34]
shr edx, cl
dec edx
cmp eax, edx
jg 0x5fb3d9
mov ecx, dword [esp + 0x1c]
dec ecx
mov dword [esp + 0x38], ecx
mov ecx, eax
shl ecx, 4
sub edx, eax
inc edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
jmp 0x5fb391
mov ecx, dword [esp + 0x30]
mov eax, dword [esi + 0x78]
mov edi, dword [eax + ecx + 8]
add eax, ecx
xor ecx, ecx
test edi, edi
jle 0x5fb3b9
mov edx, dword [eax + 4]
mov bx, word [esp + 0x38]
cmp word [edx], bx
je 0x5fb40e
inc ecx
add edx, 2
cmp ecx, edi
jl 0x5fb3a3
mov ebx, dword [esp + 0x18]
or ecx, 0xffffffff
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x34]
mov word [edx + ecx*2], bx
mov ecx, dword [esp + 0x30]
add ecx, 0x10
dec eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], eax
jne 0x5fb38d
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov eax, dword [edi + 8]
dec esi
and eax, 0x7fffffff
cmp eax, esi
jge 0x5fb402
add eax, eax
cmp esi, eax
jl 0x5fb3f6
mov eax, esi
push 0x10
push eax
push edi
call fcn.0054d250
add esp, 0xc
mov dword [edi + 4], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [esp + 0x18]
jmp 0x5fb3bc