Function at 0x438660
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, 0xa0
mov edi, dword [ebp + 8]
mov eax, dword [0x44bcd8]
mov dword [esp + 0x1c], 0x79cf7b5f
mov dword [esp + 0x20], 0x7deb7ff7
mov dword [esp + 0x24], 0x71e973e8
mov dword [esp + 0x28], 0x753277e3
mov dword [esp + 0x2c], 0x69f56be2
mov dword [esp + 0x30], 0x6df56fe2
mov dword [esp + 0x34], 0x61626337
mov word [esp + 0x38], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1c]
lea esi, [ecx + 0x3f]
mov ebx, edx
not ebx
or ebx, esi
add ebx, edx
add ebx, ebx
lea esi, [ecx + edx]
add esi, 0xa52d743f
mov edx, esi
sub edx, ebx
add edx, 0xfffffffe
and esi, 1
or edx, 1
add edx, esi
add dl, 0xc4
mov byte [esp + ecx + 0x1c], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x1e
jb 0x4386c0
lea ecx, [esp + 0x64]
lea esi, [esp + 0x8c]
lea ebx, [esp + 0x1c]
push ecx
push 8
push esi
push 0xd
push ebx
push 0
call eax
test eax, eax
jns 0x43872a
mov dword [esp + 0x8c], 0x3a0043
mov dword [esp + 0x90], 0x5c
mov dword [esp + 0x70], 0xee35
mov dword [esp + 0x6c], 0x2263fde9
mov dword [esp + 0x68], 0x9cafeb5
mov dword [esp + 0x64], 0x9093b6fa
mov dword [esp + 0x18], 0
lea eax, [esp + 0x18]
push eax
push 0x442678
push 1
push 0
push 0x442688
call dword [0x442db8]
test eax, eax
js 0x438ccb
mov dword [esp + 0x1c], 0x33e531e2
mov dword [esp + 0x20], 0x3fe23deb
mov dword [esp + 0x24], 0x3bf939dc
mov dword [esp + 0x28], 0xc713c50d
mov dword [esp + 0x2c], 0xc3f0c11e
mov dword [esp + 0x30], 0xcdcc
mov eax, 0x3735a774
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x3735a758]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xbc
mov byte [esp + eax - 0x3735a758], cl
inc eax
cmp eax, 0x3735a78c
jne 0x4387c0
push ebx
call dword [0x442dd0]
mov ebx, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
mov dword [esp + 0x24], ebx
push ebx
lea ebx, [esp + 0x3c]
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x438cb7
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [esp + 0x30]
call dword [0x442dc4]
test eax, eax
js 0x438cad
mov dword [esp + 0x1c], 0x89258b25
mov dword [esp + 0x20], 0x858687dc
xor eax, eax
nop
nop
movzx edx, byte [esp + eax + 0x1c]
lea esi, [eax + 0x23]
and esi, edx
lea ecx, [eax - 0x52024ddd]
or ecx, edx
xor ecx, esi
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0x50
mov byte [esp + eax + 0x1c], cl
add eax, 0x9588aff
mov ecx, eax
and ecx, 0x102
xor eax, 0xf6a77502
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x438850
push ebx
call dword [0x442dd0]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], 0x29e12bd1
mov dword [esp + 0x20], 0x2de52fe4
mov dword [esp + 0x24], 0xd126d3e9
mov dword [esp + 0x28], 0xd5f8d7f0
mov dword [esp + 0x2c], 0xd910dbf4
mov dword [esp + 0x30], 0xdd2fdf2e
mov dword [esp + 0x34], 0xc1e2c32f
mov dword [esp + 0x38], 0xc529c739
mov dword [esp + 0x3c], 0xc91fcb56
mov dword [esp + 0x40], 0xcd2fcf1e
mov dword [esp + 0x44], 0xf13df30a
mov dword [esp + 0x48], 0xf503f701
mov word [esp + 0x4c], 0xfbf4
mov dword [esp + 0x4e], 0
mov word [esp + 0x52], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1c]
mov esi, ecx
xor esi, 0xba584089
mov ebx, eax
and ebx, 0x6c
sub ebx, esi
mov esi, edx
and esi, ebx
add esi, esi
sub ebx, esi
add bl, dl
add bl, 0xad
mov byte [esp + ecx + 0x1c], bl
inc ecx
add eax, 2
cmp ecx, 0x38
jne 0x438920
lea ebx, [esp + 0x1c]
push ebx
call dword [0x442dd0]
mov esi, dword [esp + 0x14]
mov ecx, dword [esi]
lea edx, [esp + 0x60]
push edx
push 0
push 0x30
mov dword [esp + 0x80], eax
push eax
mov ebx, dword [esp + 0x20]
push ebx
push esi
call dword [ecx + 0x50]
test eax, eax
js 0x438c93
mov dword [esp + 0x58], 0
mov eax, dword [esp + 0x60]
mov ecx, dword [eax]
lea edx, [esp + 0x58]
lea esi, [esp + 0x5c]
push edx
push esi
push 1
push 0xffffffffffffffff
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x438c89
cmp eax, 1
je 0x438c89
cmp dword [esp + 0x58], 0
je 0x438c89
lea eax, [esp + 0x78]
push eax
call dword [0x442ddc]
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov dword [esp + 0x1c], 0xc169c779
mov dword [esp + 0x20], 0xcd69c352
mov dword [esp + 0x24], 0xc95acf6f
mov dword [esp + 0x28], 0xb555cb7e
mov dword [esp + 0x2c], 0xb114b723
mov dword [esp + 0x30], 0xbd20b31f
mov dword [esp + 0x34], 0xbfbc
mov byte [esp + 0x38], 0
mov ecx, 0x3a750fb1
mov edx, 0x8b15e14e
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x3a750f95]
lea esi, [edx + 0x74ea1f00]
and esi, edx
mov eax, ecx
or eax, ebx
not ebx
or ebx, esi
and ebx, eax
add bl, 0x8b
mov byte [esp + ecx - 0x3a750f95], bl
inc ecx
dec edx
cmp ecx, 0x3a750fce
jne 0x438a20
mov ecx, dword [esp + 4]
mov eax, dword [ecx]
push 0
push 0
lea esi, [esp + 0x80]
push esi
push 0
lea ebx, [esp + 0x2c]
push ebx
push ecx
call dword [eax + 0x10]
test eax, eax
mov ebx, dword [esp + 0x10]
js 0x438c78
cmp word [esp + 0x78], 8
jne 0x438c78
mov esi, dword [esp + 0x80]
movzx ecx, word [esi]
test cx, cx
je 0x438ad3
lea eax, [esi + 2]
xor edx, edx
jmp 0x438aac
inc edx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x438ad5
cmp cx, 0x7f
jbe 0x438aa0
mov ebx, edx
movzx edx, cx
cmp edx, 0x7ff
ja 0x438ac6
mov edx, ebx
add edx, 2
jmp 0x438aa1
cmp cx, 0xffff
mov edx, ebx
je 0x438aa1
add edx, 3
jmp 0x438aa1
xor edx, edx
lea eax, [edx + 1]
push eax
mov ebx, edx
call fcn.0040a1d0
add esp, 4
mov edx, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x54], ebx
test ebx, ebx
je 0x438c26
movzx eax, word [esi]
mov edx, dword [esp + 0xc]
test ax, ax
je 0x438c26
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xc]
nop
nop
nop
movzx ebx, ax
lea eax, [esi + 2]
mov dword [esp + 4], eax
cmp bx, 0x7f
ja 0x438b30
lea eax, [edx + 1]
mov byte [edx], bl
jmp 0x438bc0
cmp ebx, 0x7ff
ja 0x438b54
cmp ecx, 2
jb 0x438b54
mov eax, ebx
shr eax, 6
add al, 0xc0
mov byte [edx], al
and bl, 0x3f
or bl, 0x80
lea eax, [edx + 2]
mov byte [edx + 1], bl
jmp 0x438bc0
mov eax, ebx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x438bea
cmp ecx, 4
jb 0x438bea
movzx eax, word [esi + 2]
mov dword [esp + 4], eax
add esi, 4
shl ebx, 0xa
mov eax, dword [esp + 4]
add eax, ebx
add eax, 0xfca02400
mov ebx, eax
shr ebx, 0x12
add bl, 0xf0
mov byte [edx], bl
mov ebx, eax
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [edx + 1], bl
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [edx + 2], al
mov eax, dword [esp + 4]
and al, 0x3f
or al, 0x80
mov ebx, eax
lea eax, [edx + 4]
mov byte [edx + 3], bl
mov dword [esp + 4], esi
nop
nop
nop
nop
nop
nop
mov esi, eax
sub esi, edx
mov ebx, esi
not ebx
and ebx, ecx
not ecx
and ecx, esi
sub ebx, ecx
mov esi, dword [esp + 4]
mov edx, eax
mov ecx, ebx
movzx eax, word [esi]
test ax, ax
je 0x438c26
test ecx, ecx
jne 0x438b10
jmp 0x438c26
movzx eax, ax
cmp eax, 0xdc00
jne 0x438bfa
mov esi, dword [esp + 4]
jmp 0x438bd8
cmp ecx, 3
jb 0x438c22
mov eax, ebx
shr eax, 0xc
or al, 0xe0
mov byte [edx], al
mov eax, ebx
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [edx + 1], al
and bl, 0x3f
or bl, 0x80
lea eax, [edx + 3]
mov byte [edx + 2], bl
jmp 0x438bc0
mov eax, edx
jmp 0x438bc0
mov byte [edx], 0
mov eax, 3
mov ecx, dword [esp + 0x54]
sub eax, ecx
cmp eax, 0xfffffffd
jae 0x438c3e
mov eax, 0xfffffffc
add eax, ecx
shr eax, 2
cmp eax, 3
lea esi, [esp + 0x78]
jb 0x438c51
mov eax, 3
lea eax, [eax*4 + 4]
push eax
mov ebx, dword [esp + 0x10]
push ebx
lea eax, [esp + 0x6c]
push eax
call fcn.0040a200
add esp, 0xc
push ebx
call fcn.0040a1e0
add esp, 4
mov ebx, dword [esp + 0x10]
push esi
call dword [0x442dd8]
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x60]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [0x442dd4]
push ebx
call esi
push dword [esp + 0x74]
call esi
lea esi, [esp + 0x8c]
lea ebx, [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 8]
call dword [0x442dd4]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0xbeb8f1a1
push dword [0x44acd0]
call fcn.0043f3a0
add esp, 8
push 0
push 0
push 0
push 0
push ebx
push 0
push 0
push esi
call eax
test eax, eax
je 0x438cfa
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x64], eax
xor ebx, ebx
jmp 0x438d0e
inc ebx
mov edi, dword [esp + 4]
cmp ebx, 4
je 0x438e37
mov eax, 0
test ebx, ebx
je 0x438d21
cmp dword [esp + ebx*4 + 0x64], 1
mov eax, ebx
sbb eax, 0
mov esi, dword [esp + eax*4 + 0x64]
mov edx, esi
and edx, 0x1a5845
mov ecx, esi
or esi, 0x1a5845
imul esi, edx
xor edx, 0x1a5845
and ecx, 0xffe5a7ba
imul ecx, edx
add esi, ecx
lea eax, [edi + 8]
add esi, 0xebde8a13
mov dword [esp + ebx*4 + 0x64], esi
mov byte [edi + 8], 0
mov dword [esp + 4], eax
je 0x438dc0
mov dword [esp + 8], ebx
mov edi, eax
cmp esi, 0x100
jb 0x438dd0
mov ecx, esi
mov edx, esi
and edx, 0xfd
mov ebx, esi
and ebx, 2
mov eax, ebx
xor eax, 2
imul eax, edx
or edx, 2
imul edx, ebx
movzx eax, word [edx + eax + 0x442385]
mov word [edi - 2], ax
add edi, 0xfffffffe
shr ecx, 8
cmp esi, 0xffff
mov esi, ecx
ja 0x438d70
cmp ecx, 0xf
ja 0x438dd7
movzx eax, byte [ecx + 0x442b88]
mov byte [edi - 1], al
dec edi
jmp 0x438dff
mov byte [edi + 7], 0x30
add edi, 7
jmp 0x438e03
mov ecx, esi
cmp ecx, 0xf
jbe 0x438dac
mov eax, ecx
and eax, 2
mov edx, ecx
or ecx, 2
imul ecx, eax
xor eax, 2
and edx, 0xfd
imul edx, eax
movzx eax, word [edx + ecx + 0x442385]
mov word [edi - 2], ax
add edi, 0xfffffffe
mov ebx, dword [esp + 8]
mov eax, 0xfffffff7
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + eax + 9], 0
lea eax, [eax + 1]
jne 0x438e10
test eax, eax
je 0x438d00
add edi, eax
neg eax
push eax
push 0x30
push edi
call fcn.0040a250
add esp, 0xc
jmp 0x438d00
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret