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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x6c
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x80]
mov eax, dword [0x4b850c]
mov dword [esp + 0x5c], eax
xor eax, eax
mov dword [esp + 0x18], edi
test ebx, ebx
je 0x445ea5
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
test edx, 0x100000
jne 0x445ec0
test dh, 0x80
jne 0x445eed
test edx, 0x10000
jne 0x445f29
test dl, 4
jne 0x445f52
test dl, 0x10
jne 0x4462c8
test dl, 8
jne 0x446150
test edx, 0x20000
jne 0x4460d0
test edx, 0x80000
jne 0x445ff0
test byte [esp + 0x14], 1
jne 0x446068
test byte [esp + 0x14], 0x20
jne 0x446093
mov eax, dword [esp + 0x5c]
sub eax, dword [0x4b850c]
jne 0x4467d3
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [ebx + 0x68]
test esi, esi
je 0x445e47
mov eax, dword [ebx + 0x124]
mov dword [esp + 4], edi
mov dword [esp], ebx
add eax, 1
mov dword [esp + 8], eax
call esi
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
test dh, 0x80
je 0x445e50
mov eax, dword [ebx + 0x78]
shr eax, 7
xor eax, 1
and eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x124]
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call fcn.00442950
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
test edx, 0x10000
je 0x445e5c
mov eax, dword [ebx + 0x124]
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call fcn.004428e0
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
test dl, 4
je 0x445e65
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], eax
and eax, 0xffff00
cmp eax, 0x10800
jne 0x445e65
movzx ecx, byte [ebx + 0x150]
mov edi, dword [ebx + 0x124]
mov esi, dword [esp + 0x18]
mov byte [esp + 0x1c], cl
lea eax, [edi + 1]
mov esi, dword [esi]
cmp cl, 2
je 0x44673e
cmp cl, 4
je 0x4464e4
cmp cl, 1
jne 0x4465b0
test esi, esi
je 0x4465b0
lea edi, [edi + esi + 1]
xor ecx, ecx
mov esi, eax
mov edx, pe_nt_image_headers32
jmp 0x445fca
sar edx, 1
cmp eax, edi
je 0x44678a
cmp byte [eax], 0
je 0x445fd1
or ecx, edx
add eax, 1
cmp edx, 1
jne 0x445fc0
mov byte [esi], cl
mov edx, pe_nt_image_headers32
add esi, 1
xor ecx, ecx
jmp 0x445fc2
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0x124]
movzx esi, byte [edi + 8]
add eax, 1
mov ecx, esi
cmp cl, 6
je 0x4463b0
cmp cl, 4
jne 0x445e8f
mov edi, dword [esp + 0x18]
cmp byte [edi + 9], 8
mov esi, dword [edi]
je 0x44655a
test esi, esi
je 0x4467ca
xor edx, edx
nop
pcmpeqd xmm2, xmm2
pinsrw xmm0, word [eax + edx*4 + 2], 0
pxor xmm2, xmm0
movd ecx, xmm2
mov word [eax + edx*4 + 2], cx
add edx, 1
cmp edx, esi
jne 0x446030
mov eax, dword [ebx + 0x7c]
mov dword [esp + 0x14], eax
test byte [esp + 0x14], 1
je 0x445e9a
lea esi, [esi]
mov eax, dword [ebx + 0x124]
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call fcn.00442b70
mov eax, dword [ebx + 0x7c]
mov dword [esp + 0x14], eax
test byte [esp + 0x14], 0x20
je 0x445ea5
mov eax, dword [esp + 0x5c]
sub eax, dword [0x4b850c]
jne 0x4467d3
mov eax, dword [ebx + 0x124]
add eax, 1
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x80], eax
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.004427e0
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0x124]
movzx esi, byte [edi + 8]
lea ebp, [eax + 1]
mov ecx, esi
cmp cl, 6
je 0x4462f0
cmp cl, 4
jne 0x445e8f
mov esi, dword [esp + 0x18]
cmp byte [esi + 9], 8
mov edi, dword [esi]
mov esi, 0
je 0x446532
test edi, edi
je 0x4467be
lea esi, [esi]
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp]
add ebp, 4
add esi, 1
movzx edx, byte [ebp - 2]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 1]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, edx
mov dword [ebp - 4], eax
cmp esi, edi
jne 0x446118
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
jmp 0x445e83
mov esi, dword [esp + 0x18]
movzx edi, byte [esi + 8]
mov eax, edi
cmp al, 3
je 0x445e77
mov eax, dword [ebx + 0x124]
movzx esi, byte [esi + 9]
mov dword [esp + 0x20], eax
mov eax, esi
mov byte [esp + 0x28], al
test edi, 2
je 0x4464c8
movzx ecx, byte [ebx + 0x1aa]
movzx ebp, byte [ebx + 0x1a9]
mov dword [esp + 0x1c], 3
mov dword [esp + 0x50], ecx
mov ecx, esi
sub ecx, dword [esp + 0x50]
sub eax, ebp
mov dword [esp + 0x40], ecx
movzx ecx, byte [ebx + 0x1ab]
mov dword [esp + 0x54], ecx
mov ecx, esi
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x44], ecx
and edi, 4
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x3c], eax
je 0x4461e6
movzx edi, byte [ebx + 0x1ad]
mov ecx, dword [esp + 0x1c]
sub esi, edi
mov dword [esp + ecx*4 + 0x4c], edi
mov dword [esp + ecx*4 + 0x3c], esi
add ecx, 1
mov dword [esp + 0x1c], ecx
cmp byte [esp + 0x28], 7
ja 0x4463f8
movzx edi, byte [ebx + 0x1ac]
mov esi, dword [esp + 0x18]
mov ecx, edi
mov esi, dword [esi + 4]
cmp cl, 1
je 0x44671f
cmp byte [esp + 0x28], 4
jne 0x44621e
mov dword [esp + 0x1c], 0x11
cmp cl, 3
je 0x446226
mov dword [esp + 0x1c], 0xff
test esi, esi
je 0x445e77
mov edi, dword [esp + 0x20]
mov edx, ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebx
neg edx
lea esi, [edi + esi + 1]
lea ecx, [edi + 1]
mov dword [esp + 0x24], esi
mov esi, edx
lea esi, cs:[esi]
mov eax, dword [esp + 0x28]
movzx edi, byte [ecx]
cmp eax, esi
jle 0x4465e0
mov edx, eax
xor ebx, ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], ebx
neg edx
jmp 0x446280
mov ecx, eax
sub eax, ebp
add edx, ebp
shl ebx, cl
or dword [esp + 0x14], ebx
cmp eax, esi
jle 0x44629e
mov ebx, edi
test eax, eax
jg 0x446270
mov ecx, edx
sub eax, ebp
add edx, ebp
shr ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
and ecx, ebx
or dword [esp + 0x14], ecx
cmp eax, esi
jg 0x446280
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
mov byte [ecx], bl
add ecx, 1
cmp ecx, eax
jne 0x446250
mov ebx, dword [esp + 0x2c]
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
jmp 0x445e77
mov eax, dword [ebx + 0x124]
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call fcn.004428a0
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
jmp 0x445e6e
mov esi, dword [edi]
cmp byte [edi + 9], 8
mov dword [esp + 0x24], esi
je 0x4465f5
mov eax, dword [esp + 0x24]
mov dword [esp + 0x1c], 0
test eax, eax
je 0x4467be
mov dword [esp + 0x28], ebx
lea esi, cs:[esi]
movzx eax, byte [ebp + 1]
movzx edi, byte [ebp + 4]
add ebp, 8
movzx ecx, byte [ebp - 3]
movzx esi, byte [ebp - 8]
movzx edx, byte [ebp - 5]
movzx ebx, byte [ebp - 6]
mov byte [esp + 0x14], al
movzx eax, byte [ebp - 2]
shl ecx, 8
add dword [esp + 0x1c], 1
mov byte [esp + 0x20], al
mov eax, edi
movzx edi, al
movzx eax, byte [esp + 0x14]
or ecx, edi
movzx edi, dl
mov edx, ecx
mov ecx, esi
shl eax, 8
movzx esi, cl
movzx ecx, byte [ebp - 1]
shl edx, 8
or eax, esi
movzx esi, byte [esp + 0x20]
or edx, edi
movzx edi, bl
shl eax, 8
shl edx, 8
or eax, ecx
or edx, edi
mov edi, dword [esp + 0x24]
shl eax, 8
mov dword [ebp - 8], edx
or eax, esi
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x1c]
cmp eax, edi
jne 0x446320
mov ebx, dword [esp + 0x28]
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
jmp 0x445e83
cmp byte [edi + 9], 8
mov esi, dword [edi]
je 0x446651
test esi, esi
je 0x4467ca
xor edx, edx
lea esi, cs:[esi]
nop
pcmpeqd xmm1, xmm1
pinsrw xmm0, word [eax + edx*8 + 6], 0
pxor xmm1, xmm0
movd ecx, xmm1
mov word [eax + edx*8 + 6], cx
add edx, 1
cmp edx, esi
jne 0x4463d0
jmp 0x44604f
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
imul esi, dword [edi]
cmp byte [esp + 0x28], 8
mov dword [esp + 0x24], esi
je 0x44668c
mov esi, dword [esp + 0x24]
test esi, esi
je 0x445e77
mov dword [esp + 0x2c], ebx
xor ecx, ecx
lea esi, [esi]
mov edi, dword [esp + 0x20]
movzx esi, word [edi + ecx*2 + 1]
mov edi, ebp
neg edi
mov word [esp + 0x14], si
rol si, 8
movzx esi, si
cmp edi, eax
jge 0x4464de
mov ebx, eax
mov dword [esp + 0x28], ecx
xor edx, edx
mov dword [esp + 0x14], edi
neg ebx
jmp 0x446472
mov ecx, eax
sub eax, ebp
add ebx, ebp
shl edi, cl
or edx, edi
mov edi, dword [esp + 0x14]
cmp eax, edi
jle 0x44648a
mov edi, esi
test eax, eax
jg 0x446460
mov ecx, ebx
sub eax, ebp
add ebx, ebp
shr edi, cl
or edx, edi
mov edi, dword [esp + 0x14]
cmp eax, edi
jg 0x446472
mov ecx, dword [esp + 0x28]
movzx eax, dh
mov esi, dword [esp + 0x20]
mov byte [esi + ecx*2 + 1], al
mov eax, dword [esp + 0x24]
mov byte [esi + ecx*2 + 2], dl
add ecx, 1
cmp ecx, eax
je 0x4462b3
mov eax, ecx
xor edx, edx
div dword [esp + 0x1c]
mov eax, dword [esp + edx*4 + 0x3c]
mov ebp, dword [esp + edx*4 + 0x4c]
jmp 0x446428
movzx ebp, byte [ebx + 0x1ac]
mov dword [esp + 0x1c], 1
sub eax, ebp
jmp 0x4461bd
xor edx, edx
xor eax, eax
jmp 0x446491
test esi, esi
je 0x4465b0
lea ebp, [edi + esi + 1]
xor edi, edi
mov esi, eax
mov ecx, 4
mov edx, edi
mov edi, eax
mov eax, edx
jmp 0x44651f
mov byte [edi], al
mov ecx, 4
add edi, 1
xor eax, eax
add esi, 1
cmp esi, ebp
je 0x4467aa
movzx edx, byte [esi]
and edx, 0xf
shl edx, cl
or eax, edx
test ecx, ecx
je 0x446508
sub ecx, 4
jmp 0x446514
test edi, edi
je 0x4467be
lea esi, [esi]
movzx edx, byte [eax + esi*2 + 2]
mov dh, byte [eax + esi*2 + 1]
mov word [eax + esi*2 + 1], dx
add esi, 1
cmp esi, edi
jne 0x446540
jmp 0x446144
xor ecx, ecx
test esi, esi
je 0x4467ca
test esi, 1
je 0x446580
mov ecx, 1
not byte [eax + 1]
cmp ecx, esi
je 0x44604f
lea esi, [esi]
not byte [eax + ecx*2 + 1]
not byte [eax + ecx*2 + 3]
add ecx, 2
cmp ecx, esi
jne 0x446580
jmp 0x44604f
mov esi, eax
mov eax, edi
mov edi, esi
cmp ecx, 6
je 0x4465a3
mov edx, edi
mov byte [eax], dl
mov edx, dword [ebx + 0x7c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], edx
mov esi, dword [eax]
mov edi, dword [esp + 0x18]
movzx eax, byte [esp + 0x1c]
mov byte [edi + 9], al
mul byte [edi + 0xa]
mov byte [edi + 0xb], al
cmp al, 7
jbe 0x4465e7
shr al, 3
movzx eax, al
imul eax, esi
mov esi, dword [esp + 0x18]
mov dword [esi + 4], eax
jmp 0x445e65
xor ebx, ebx
jmp 0x4462a6
movzx eax, al
imul eax, esi
add eax, 7
shr eax, 3
jmp 0x4465cf
mov ecx, dword [esp + 0x24]
xor esi, esi
test ecx, ecx
je 0x4467be
mov dword [esp + 0x14], ebx
mov edi, dword [esp + 0x24]
lea esi, cs:[esi]
movzx edx, byte [ebp + 1]
movzx ecx, byte [ebp + 2]
add ebp, 4
add esi, 1
movzx eax, byte [ebp - 4]
movzx ebx, byte [ebp - 1]
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ecx
movzx ecx, dl
shl eax, 8
mov edx, eax
or edx, ecx
mov dword [ebp - 4], edx
cmp esi, edi
jne 0x446610
mov ebx, dword [esp + 0x14]
mov edx, dword [ebx + 0x7c]
mov dword [esp + 0x14], edx
jmp 0x445e83
xor ecx, ecx
test esi, esi
je 0x4467ca
test esi, 1
je 0x446678
mov ecx, 1
not byte [eax + 3]
cmp ecx, esi
je 0x44604f
lea esi, cs:[esi]
not byte [eax + ecx*4 + 3]
not byte [eax + ecx*4 + 7]
add ecx, 2
cmp ecx, esi
jne 0x446678
jmp 0x44604f
test esi, esi
je 0x445e77
mov dword [esp + 0x2c], ebx
xor ecx, ecx
lea esi, [esi]
mov edi, dword [esp + 0x20]
mov esi, ebp
neg esi
movzx edi, byte [edi + ecx + 1]
cmp eax, esi
jle 0x44673a
mov edx, eax
mov dword [esp + 0x28], ecx
xor ebx, ebx
mov dword [esp + 0x14], esi
neg edx
jmp 0x4466da
mov ecx, eax
sub eax, ebp
add edx, ebp
shl esi, cl
or ebx, esi
mov esi, dword [esp + 0x14]
cmp eax, esi
jle 0x4466f2
mov esi, edi
test eax, eax
jg 0x4466c8
mov ecx, edx
sub eax, ebp
add edx, ebp
shr esi, cl
or ebx, esi
mov esi, dword [esp + 0x14]
cmp eax, esi
jg 0x4466da
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov byte [eax + ecx + 1], bl
mov eax, dword [esp + 0x24]
add ecx, 1
cmp ecx, eax
je 0x4462b3
mov eax, ecx
xor edx, edx
div dword [esp + 0x1c]
mov eax, dword [esp + edx*4 + 0x3c]
mov ebp, dword [esp + edx*4 + 0x4c]
jmp 0x4466a0
cmp byte [esp + 0x28], 2
mov edi, 0x55
mov ecx, 0xff
cmovne edi, ecx
mov dword [esp + 0x1c], edi
jmp 0x446226
xor ebx, ebx
jmp 0x4466f6
test esi, esi
je 0x4465b0
lea ebp, [edi + esi + 1]
xor edi, edi
mov esi, eax
mov ecx, 6
mov edx, edi
mov edi, eax
mov eax, edx
jmp 0x446777
mov byte [edi], al
mov ecx, 6
add edi, 1
xor eax, eax
add esi, 1
cmp esi, ebp
je 0x446594
movzx edx, byte [esi]
and edx, 3
shl edx, cl
or eax, edx
test ecx, ecx
je 0x446760
sub ecx, 2
jmp 0x44676c
cmp edx, 0x80
je 0x4465a3
mov byte [esi], cl
mov eax, dword [esp + 0x18]
mov edx, dword [ebx + 0x7c]
mov esi, dword [eax]
mov dword [esp + 0x14], edx
jmp 0x4465b0
mov esi, eax
mov eax, edi
mov edi, esi
cmp ecx, 4
jne 0x44659f
jmp 0x4465a3
test edx, 0x80000
je 0x445e8f
mov dword [esp + 0x14], edx
jmp 0x445e8f
call fcn.00464ba0
nop
nop
nop
nop
nop
nop
nop
nop