Function at 0x423880
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, 0x460
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x5c], 0x89068b01
mov dword [esp + 0x60], 0x85398733
mov dword [esp + 0x64], 0x81f08337
mov dword [esp + 0x68], 0x9d169f3b
mov dword [esp + 0x6c], 0x999a9b27
mov dword [esp + 0x70], 0
mov eax, 0x23
mov ecx, 0xdc
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0xc4
mov edx, eax
and edx, 0x3b
or edx, esi
xor dl, byte [esp + eax + 0x39]
xor dl, 0xc4
add dl, 0x51
mov byte [esp + eax + 0x39], dl
inc eax
dec ecx
cmp eax, 0x3b
jne case.default.0x423927
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x40]
push eax
call fcn.00436dc0
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x444ee8]
lea ecx, [esp + 0x40]
push 0x410
call fcn.00437020
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x444ef0]
jmp dword [0x444fa0]
mov dword [esp + 0x5c], 0xdef5ccd7
mov dword [esp + 0x60], 0xccd2ffd4
mov dword [esp + 0x64], 0xd8d3d5f3
mov dword [esp + 0x68], 0x152e2af7
mov dword [esp + 0x6c], 0x340d0616
mov dword [esp + 0x70], 0x2d000a0f
mov dword [esp + 0x74], 0x262f0a2a
mov dword [esp + 0x78], 0x3a113801
mov dword [esp + 0x7c], 0x12040202
mov dword [esp + 0x80], 0x321df703
mov dword [esp + 0x84], 0xa1f21b13
xor edi, edi
movzx eax, byte [esp + edi + 0x5c]
mov edx, edi
and edx, 0x31
mov ecx, edi
and ecx, 2
mov esi, ecx
xor esi, 2
imul esi, edx
or edx, 2
imul edx, ecx
mov ecx, edi
xor ecx, 0x2f8ea673
add ecx, esi
add ecx, edx
lea edx, [eax + eax]
not edx
add edx, eax
mov esi, edx
xor esi, 0x942e01c7
or edx, 0x6bd1fe38
and edx, esi
and eax, 0xffffffc7
or eax, edx
lea edx, [ecx + ecx]
not edx
add edx, ecx
and edx, 0x6bd1fe38
and ecx, 0x40e01c7
or ecx, edx
mov edx, eax
and edx, ecx
add ecx, eax
add edx, edx
sub ecx, edx
add cl, 0xc1
mov byte [esp + edi + 0x5c], cl
inc edi
cmp edi, 0x2c
jne case.default.0x423a4b
lea eax, [esp + 0x50]
lea ecx, [esp + 0x40]
push 0
push 0x2b
lea edx, [esp + 0x64]
push edx
push eax
call fcn.00437930
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
xor eax, eax
cmp ecx, esi
sete al
mov dword [esp + 0x10], esi
jmp dword [eax*4 + 0x444ef8]
mov ebx, ecx
mov ecx, esi
mov edi, ebx
xor ecx, ebx
mov eax, ebx
not eax
and eax, esi
add eax, eax
sub eax, ecx
sar eax, 3
mov edx, eax
and edx, 0x421
mov ecx, eax
or eax, 0x421
imul eax, edx
xor edx, 0x421
and ecx, 0xfffffbde
imul ecx, edx
add eax, ecx
push eax
call fcn.00408420
add esp, 4
mov dword [esp + 0x34], 0
xor ecx, ecx
cmp ebx, esi
setne cl
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], eax
jmp dword [ecx*4 + 0x444f00]
mov ecx, dword [esp + 0x3c]
add ecx, 8
xor eax, eax
mov ebx, ecx
cmp ecx, esi
setne al
jmp dword [eax*4 + 0x444f00]
mov esi, dword [ebx]
mov dword [esp + 0x3c], ebx
mov edi, dword [ebx + 4]
push 0x400
push 0
lea ebx, [esp + 0x64]
push ebx
call fcn.004084a0
add esp, 0xc
lea eax, [esp + 0x20]
lea ecx, [esp + 0x40]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.004377d0
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x20]
or ecx, dword [esp + 0x24]
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x444f20]
mov eax, 1
mov esi, dword [esp + 0x10]
jmp dword [eax*4 + 0x444f28]
xor eax, eax
mov esi, dword [esp + 0x10]
jmp dword [eax*4 + 0x444f28]
mov byte [esp + 0x45b], 0
movzx eax, byte [esp + 0x5c]
xor edi, edi
test al, al
je 0x423b81
lea ecx, [esp + 0x5c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x423b7f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x423b70
jmp 0x423b81
mov edi, ecx
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x444f30]
movzx eax, byte [edi + 1]
inc edi
xor ecx, ecx
test al, al
je 0x423baf
mov ecx, edi
nop
nop
nop
nop
cmp al, 0x2e
je 0x423baf
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x423ba0
xor ecx, ecx
xor eax, eax
test ecx, ecx
setne al
jmp dword [eax*4 + 0x444f38]
mov edx, ecx
sub edx, edi
mov eax, edx
and eax, 0xfffffffc
mov dword [esp + 0x2c], ecx
mov ecx, edx
and ecx, 3
mov esi, edx
or esi, 3
imul esi, ecx
xor ecx, 3
imul ecx, eax
add esi, ecx
shr esi, 2
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax - 1]
cmp eax, 0x3d
je 0x423bf4
cmp eax, 0x2e
jne 0x423bf5
dec esi
mov dword [esp + 0xc], edx
movzx eax, byte [edi + edx - 2]
cmp eax, 0x3d
je 0x423c08
cmp eax, 0x2e
jne 0x423c1c
dec esi
mov eax, esi
mov dword [esp + 0x38], esi
lea eax, [esi + 1]
mov dword [esp + 0x28], eax
jmp dword [0x444f44]
mov eax, esi
mov dword [esp + 0x38], esi
lea eax, [esi + 1]
mov dword [esp + 0x28], eax
jmp dword [0x444f44]
push dword [esp + 0x28]
call fcn.00408420
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x2c], edi
je 0x423d4e
xor ebx, ebx
mov esi, 2
jmp 0x423c70
lea eax, [esi + 4]
add esi, 2
cmp esi, edx
mov esi, eax
jae 0x423d4e
mov dword [esp + 4], ebx
mov edi, dword [esp + 0x1c]
movzx eax, byte [edi + esi - 2]
push eax
call fcn.0041a5b0
add esp, 4
mov ebx, eax
movzx eax, byte [edi + esi - 1]
push eax
call fcn.0041a5b0
add esp, 4
shl bl, 2
mov ecx, eax
shr cl, 4
and cl, 3
or cl, bl
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 4]
mov byte [edx + ebx], cl
mov ecx, dword [esp + 4]
lea ebx, [ecx + 1]
mov edx, dword [esp + 0xc]
cmp esi, edx
jae 0x423c60
mov byte [esp + 0xb], al
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + esi]
push eax
call fcn.0041a5b0
mov edx, dword [esp + 0x10]
add esp, 4
cmp al, 0x40
je 0x423c60
mov byte [esp + 0xa], al
movzx eax, al
mov ecx, eax
not ecx
or ecx, 0x3c
add eax, ecx
inc eax
movzx ecx, byte [esp + 0xb]
shl cl, 4
shr eax, 2
add al, cl
mov edi, dword [esp + 4]
lea ebx, [edi + 2]
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi + 1], al
lea eax, [esi + 1]
cmp eax, edx
jae 0x423c60
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.0041a5b0
mov edx, dword [esp + 0x10]
add esp, 4
cmp al, 0x40
movzx ecx, byte [esp + 0xa]
je 0x423c60
shl cl, 6
add al, cl
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 4]
mov byte [ecx + ebx + 2], al
add ebx, 3
jmp 0x423c60
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
jmp dword [0x444f4c]
cmp dword [esp + 0x2c], edi
jne 0x423dba
push dword [esp + 0x28]
call fcn.00408420
add esp, 4
mov esi, eax
jmp dword [0x444f4c]
mov eax, dword [esp + 0x38]
mov byte [esi + eax], 0
push esi
call fcn.00401000
add esp, 4
mov ebx, eax
jmp dword [0x444f50]
push esi
call fcn.00408430
add esp, 4
push ebx
call fcn.00401950
add esp, 4
mov edi, eax
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x444f58]
mov esi, dword [esp + 0x10]
jmp 0x423f19
mov esi, 2
mov ebx, dword [esp + 0xc]
jmp 0x423de0
lea eax, [esi + 4]
add esi, 2
cmp esi, ebx
mov esi, eax
jae case.0x423b88.5
movzx eax, byte [edi + esi - 2]
push eax
call fcn.0041a5b0
add esp, 4
movzx eax, byte [edi + esi - 1]
push eax
call fcn.0041a5b0
add esp, 4
cmp esi, ebx
jae 0x423dd0
movzx eax, byte [edi + esi]
push eax
call fcn.0041a5b0
mov ebx, dword [esp + 0x10]
add esp, 4
cmp al, 0x40
je 0x423dd0
lea eax, [esi + 1]
cmp eax, ebx
jae 0x423dd0
movzx eax, byte [edi + esi + 1]
push eax
call fcn.0041a5b0
mov ebx, dword [esp + 0x10]
add esp, 4
jmp 0x423dd0
mov dword [esp + 4], ebx
mov dword [esp + 0x20], 0xf7589497
mov word [esp + 0x24], 0
mov esi, 0xfe
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi - 0xde]
mov ebx, ecx
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov edx, ebx
and dl, 0xfd
mul dl
mov edx, eax
add dl, cl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub dl, al
movzx eax, dl
add eax, esi
add al, 0xa
mov byte [esp + esi - 0xde], al
inc esi
cmp esi, 0x104
jne case.default.0x423ea8
lea eax, [esp + 0x20]
push eax
push edi
call fcn.004018a0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x444f60]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
jmp 0x423ee3
movzx ecx, byte [eax]
test cl, cl
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
je 0x423edb
inc eax
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x423ed0
mov word [edx], 0x203a
add edx, 2
mov ebx, dword [esp + 4]
movzx eax, byte [esp + 0x5c]
test al, al
je 0x423f0b
lea ecx, [esp + 0x5d]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x423f00
mov byte [edx], 0xa
inc edx
mov dword [esp + 0x14], edx
mov al, 1
mov dword [esp + 0x34], eax
push ebx
call fcn.00401bc0
add esp, 4
mov ecx, dword [esp + 0x3c]
add ecx, 8
xor eax, eax
mov ebx, ecx
cmp ecx, esi
setne al
jmp dword [eax*4 + 0x444f00]
mov ebx, dword [esp + 0x34]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x444f18]
mov esi, dword [esp + 0x30]
jmp dword [0x444f68]
xor ebx, ebx
jmp dword [0x444f94]
mov edx, dword [esp + 0x14]
mov byte [edx], 0
mov dword [esp + 0x5c], 0x252a2bc3
mov dword [esp + 0x60], 0x29d9da27
mov dword [esp + 0x64], 0x24202223
mov dword [esp + 0x68], 0x2e22c2e1
mov dword [esp + 0x6c], 0xddfb38d3
mov dword [esp + 0x70], 0x3f353239
mov dword [esp + 0x74], 0x2936f139
mov word [esp + 0x78], 0xa734
mov dword [esp + 0x7a], 0
mov byte [esp + 0x7e], 0
xor eax, eax
mov esi, dword [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x1f
xor cl, byte [esp + eax + 0x5c]
add cl, 0x65
mov byte [esp + eax + 0x5c], cl
inc eax
cmp eax, 0x23
jne 0x423fc0
sub edx, esi
lea eax, [esp + 0x5c]
mov ecx, dword [ebp + 8]
push edx
push esi
push eax
call fcn.00409220
mov ebx, eax
jmp dword [0x444f68]
jmp dword [0x444f74]
push esi
call fcn.00408430
add esp, 4
nop
nop
push esi
call fcn.00408430
add esp, 4
jmp dword [0x444f78]
jmp dword [0x444f8c]
and bl, 1
jmp dword [0x444f94]
mov eax, dword [esp + 0x50]
test eax, eax
je case.0x423ea8.12
cmp eax, dword [esp + 0x54]
je case.0x423ea8.12
push eax
call fcn.00408430
add esp, 4
jmp case.0x423ea8.12
jmp dword [0x444f9c]
mov eax, dword [esp + 0x50]
test eax, eax
je 0x424040
cmp eax, dword [esp + 0x54]
je 0x424040
push eax
call fcn.00408430
add esp, 4
jmp 0x424040
lea ecx, [esp + 0x40]
call fcn.00437170
lea ecx, [esp + 0x40]
call fcn.00437170
jmp dword [0x444fa8]
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [edx], eax
dec edx
cmp dword [edx], eax
dec edx
cmp dword [edx], eax
push eax
cmp dword [edx], eax
push edx
cmp al, byte [edx]
push ebp
aas
inc edx
add byte [ecx], bh
aas
inc edx
add bh, dl
cmp al, byte [edx]
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
cmp dword [edi], edi
inc edx
add byte [ecx], al
add byte [eax], al
add byte [ebx + 0x3f], cl
inc edx
add byte [ebp + 0x3f], bl
inc edx
add byte [ebx], ch
cmp eax, dword [edx]
inc eax
cmp eax, dword [edx]
sar byte [edx], 0x42
add byte [ebp + 59], cl
inc edx
add al, al
cmp al, byte [edx]
invalid
inc edx
add byte [ecx - 0x10ffbdc2], bh
aas
inc edx
add byte [esi], dl
inc eax
inc edx
add ch, dh
aas
inc edx
add byte [eax], al
inc eax
inc edx
add byte [eax], dl
inc eax
inc edx
add byte [eax], al
inc eax
inc edx
add byte [eax], dl
inc eax
inc edx
add byte [eax], dl
inc eax
inc edx
add byte [eax], dl
inc eax
inc edx
add byte [esi], dl
inc eax
inc edx
add byte [edi], bl
inc eax
inc edx
add byte [esi + 0x40], al
inc edx
add byte [esi + 0x40], al
inc edx
add byte [edx + 0x39], cl
inc edx
add byte [eax + 0x40], ch
inc edx
add byte [edi + 0x40], bl
inc edx
add byte [edi + 0x40], dh
inc edx
add byte [edi + 0x40], bl
inc edx
add byte [ebx], cl