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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x38]
movzx eax, word [eax]
mov dword [esp + 4], 0xfffe0735
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov ecx, 0x2a
mov edx, 0xd5
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x26]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
add bl, 0x2e
mov byte [esp + ecx - 0x26], bl
inc ecx
dec edx
cmp ecx, 0x31
jne case.default.0x44456a
xor ecx, ecx
cmp dword [esp + 4], eax
setne cl
xor edx, edx
mov ebx, dword [esp + 0x38]
jmp dword [ecx*4 + 0x451418]
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + eax]
mov dword [esp], ecx
mov dword [esp + 4], 0x2322e4d0
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor ebp, ebp
movzx esi, byte [esp + ebp + 4]
lea edi, [ebp + 0xf8]
mov edx, ebp
xor edx, edi
xor edx, 7
and edx, esi
xor edx, edi
add dl, 0x28
mov byte [esp + ebp + 4], dl
inc ebp
cmp ebp, 7
jne case.default.0x4445c1
xor ecx, ecx
mov edx, dword [esp]
cmp edx, dword [esp + 4]
setne cl
xor edx, edx
jmp dword [ecx*4 + 0x451420]
mov edi, dword [ebx + eax + 0x78]
cmp dword [ebx + eax + 0x7c], 0
sete al
test edi, edi
sete cl
or cl, al
movzx eax, cl
xor edx, edx
mov dword [esp + 0xc], edi
jmp dword [eax*4 + 0x451428]
mov eax, dword [ebx + edi + 0x20]
add eax, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + edi + 0x24]
add eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [ebx + edi + 0x1c]
add eax, ebx
mov dword [esp + 0x14], eax
mov ecx, dword [0x452e20]
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x451430]
mov dword [esp], ecx
mov eax, edi
mov edi, dword [0x452e1c]
mov eax, dword [ebx + eax + 0x18]
add eax, edi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x44463f
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040cb60
add esp, 4
mov esi, eax
mov ecx, edi
and ecx, 0xfffffff7
mov edx, edi
and edx, 8
mov eax, edi
xor eax, 8
add eax, edi
sub eax, ecx
mov ebx, edx
not ebx
and ebx, eax
mov edi, eax
not edi
and edi, edx
mov ebp, eax
and ebp, edx
or eax, edx
xor edx, 8
imul edx, ecx
imul edi, ebx
imul eax, ebp
add eax, edx
add eax, edi
mov ebp, dword [esp]
lea edx, [eax + ebp]
cmp esi, ebp
jbe 0x44476b
cmp edx, esi
jbe 0x44476b
test eax, eax
je 0x4446fd
mov ecx, eax
and ecx, 0xfffffffe
mov edx, eax
not edx
lea ecx, [edx + ecx*2]
mov edx, esi
add edx, ecx
add ecx, ebp
neg eax
xor edi, edi
nop
movzx ebx, byte [ecx + edi]
mov byte [edx + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [edx + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [edx + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [edx + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [edx + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [edx + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [edx + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [edx + edi - 7], bl
add edi, 0xfffffff8
cmp eax, edi
jne 0x4446b0
xor eax, eax
test ebp, ebp
sete al
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
jmp dword [eax*4 + 0x451448]
jmp dword [0x451438]
mov eax, dword [ebx + edi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x44472e
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040cb60
add esp, 4
mov dword [0x452e20], eax
jmp case.0x4445c1.5
push ecx
call fcn.0040cb60
add esp, 4
mov dword [0x452e20], eax
jmp dword [0x451440]
mov eax, dword [ebx + edi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x444740
shl eax, 3
mov ecx, eax
jmp 0x444740
mov ecx, eax
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov edi, esi
add edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ebp, dword [0x452e20]
xor eax, eax
test ebp, ebp
sete al
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
jmp dword [eax*4 + 0x451448]
push ebp
call fcn.0040cb70
add esp, 4
nop
nop
nop
nop
nop
nop
mov dword [0x452e20], esi
jmp dword [0x451458]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x10], 0
cmp ecx, dword [ebx + edi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x451460]
mov eax, dword [esp + 0x18]
mov edx, dword [esp]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax*4]
mov dword [0x452e24], eax
inc edx
xor eax, eax
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
cmp edx, dword [ebx + edi + 0x18]
setb al
jmp dword [eax*4 + 0x451460]
mov eax, dword [esp + 0x1c]
mov dword [esp], edx
mov eax, dword [eax + edx*4]
add eax, ebx
mov ebx, 0xffffffff
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
cmp byte [eax + ebx + 1], 0
lea ebx, [ebx + 1]
lea ecx, [ecx + 1]
jne 0x444830
mov dword [esp + 4], 0x2e2a2cb1
mov word [esp + 8], 0
xor ecx, ecx
movzx esi, byte [esp + ecx + 4]
lea edx, [ecx - 0xe28b439]
xor edx, esi
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
add dl, 0x1c
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 6
jb 0x444850
mov ecx, 0xfb520141
test ebx, ebx
mov dword [esp + 0x20], eax
je 0x444900
mov ebp, dword [esp + 4]
mov edx, 0xfb520141
mov esi, eax
cmp ebx, 4
jb 0x4448db
mov ecx, edi
and ecx, 0xfffffffc
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [esi]
xor eax, edx
imul eax, ebp
movsx edx, byte [esi + 1]
xor edx, eax
imul edx, ebp
movsx eax, byte [esi + 2]
xor eax, edx
imul eax, ebp
movsx edx, byte [esi + 3]
add esi, 4
xor edx, eax
imul edx, ebp
add ecx, 0xfffffffc
jne 0x4448b0
mov ecx, edx
test bl, 3
je 0x444900
and edi, 3
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, byte [esi + ebx]
xor ecx, edx
imul ecx, ebp
inc ebx
mov edx, ecx
cmp edi, ebx
jne 0x4448f0
mov eax, ecx
xor eax, 0xaa8a99d1
xor edx, edx
or eax, dword [0x452e24]
sete dl
jmp dword [edx*4 + 0x451468]
xor edx, edx
mov eax, dword [esp + 0x20]
cmp byte [eax], 0x4e
setne dl
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
jmp dword [edx*4 + 0x451470]
xor edx, edx
cmp byte [eax + 1], 0x74
setne dl
jmp dword [edx*4 + 0x451478]
mov eax, dword [esp + 0x18]
mov edx, dword [esp]
movzx eax, word [eax + edx*2]
mov edx, dword [esp + 0x14]
mov edi, dword [edx + eax*4]
add edi, ebx
xor ebx, ebx
xor eax, eax
cmp ebx, 0x20
setb al
mov esi, 0xffffffff
jmp dword [eax*4 + 0x451480]
movzx eax, byte [edi + ebx]
xor edx, edx
cmp al, 0xc2
sete dl
jmp dword [edx*4 + 0x451488]
xor edx, edx
cmp al, 0xc3
sete dl
jmp dword [edx*4 + 0x451490]
xor edx, edx
cmp al, 0xb8
sete dl
jmp dword [edx*4 + 0x451498]
inc ebx
xor eax, eax
cmp ebx, 0x20
setb al
jmp dword [eax*4 + 0x451480]
mov esi, dword [edi + ebx + 1]
xor eax, eax
cmp esi, 0xffffffff
setne al
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
jmp dword [eax*4 + 0x4514a0]
xor eax, eax
xor ebx, ebx
cmp eax, dword [0x452e1c]
setb bl
xor edx, edx
jmp dword [ebx*4 + 0x4514a8]
mov ebp, dword [0x452e20]
xor ebx, ebx
cmp dword [ebp + edx*8], ecx
sete bl
mov edi, 1
jmp dword [ebx*4 + 0x4514c0]
mov dword [ebp + edx*8 + 4], esi
mov ebx, dword [case.0x44479a.30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor edi, edi
mov al, 1
jmp ebx
jmp dword [edi*4 + 0x4514d8]
mov edi, edx
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
xor ebx, ebx
cmp edx, dword [0x452e1c]
setb bl
jmp dword [ebx*4 + 0x4514a8]
mov edx, dword [case.0x44479a.29]
jmp edx
and al, 1
movzx eax, al
mov dl, 1
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
jmp dword [eax*4 + 0x4514e0]
mov eax, dword [0x452e1c]
lea edx, [eax + 1]
mov dword [0x452e1c], edx
mov edx, dword [0x452e20]
mov dword [edx + eax*8], ecx
mov dword [edx + eax*8 + 4], esi
mov al, 1
mov dword [esp + 0x10], eax
mov edx, dword [esp]
inc edx
xor eax, eax
cmp edx, dword [ebx + edi + 0x18]
setb al
jmp dword [eax*4 + 0x451460]
mov edx, dword [esp]
inc edx
xor eax, eax
cmp edx, dword [ebx + edi + 0x18]
setb al
jmp dword [eax*4 + 0x451460]
mov edx, dword [esp + 0x10]
and dl, 1
mov eax, dword [case.0x44479a.43]
jmp eax
mov eax, edx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret