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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xf0
mov dword [esp + 8], 0x29ed2bcf
mov dword [esp + 0xc], 0x2d9e2f98
mov dword [esp + 0x10], 0x319533e8
mov dword [esp + 0x14], 0x35913784
mov dword [esp + 0x18], 0x393a3bdf
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
mov ecx, 0xc76ac1c7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x38953e41]
xor edx, ecx
mov esi, edx
and esi, 0x1c
xor edx, 0x1c
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx + 0x38953e41], dl
inc ecx
cmp ecx, 0xc76ac1df
jne 0x423210
lea esi, [esp + 0xaa]
lea edx, [esp + 8]
mov ecx, 5
mov edi, esi
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xbe]
xor ebx, ebx
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esp + 0x64]
push edi
push 0
push 0
push 9
push esi
push 0
call dword [0x448398]
mov ebp, dword [esp + 0x64]
test ebp, ebp
jns 0x423282
mov eax, 0xffffffff
jmp 0x423289
lea eax, [ebp*2]
push eax
call fcn.00408160
add esp, 4
push edi
push ebp
mov dword [esp + 0x4c], eax
push eax
push 9
push esi
push 0
call dword [0x448398]
mov dword [esp + 8], 0x97d0b50
mov dword [esp + 0xc], 0x57b0785
mov dword [esp + 0x10], 0x18c0375
mov dword [esp + 0x14], 0x1d1e1f7c
lea edx, [esp + 0x18]
mov byte [esp + 0x18], 0
nop
nop
nop
movzx eax, byte [esp + ebx + 8]
mov ecx, ebx
not ecx
or ecx, 0x4d8a7483
lea esi, [ebx + ecx]
inc esi
mov ecx, esi
and ecx, 2
mov edi, esi
or esi, 2
imul esi, ecx
xor ecx, 2
and edi, 0xfffffffd
imul edi, ecx
mov ecx, ebx
xor ecx, 0x4d8a7483
add ecx, esi
add ecx, edi
xor ecx, eax
mov eax, 0x8f
sub eax, ecx
add ecx, 0x70
and eax, 0x9e
and ecx, 0x61
sub ecx, eax
add cl, 0x9f
mov byte [esp + ebx + 8], cl
mov eax, 0x19
sub eax, ebx
add ebx, 0x26
and eax, 0x25
and ebx, 0x5a
sub ebx, eax
cmp ebx, 0x11
jb 0x4232d0
lea eax, [esp + 0x9a]
lea esi, [esp + 8]
mov edi, eax
mov ecx, 4
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0xaa]
xor ebx, ebx
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov dword [esp + 8], 0xc95dcb70
mov dword [esp + 0xc], 0xc55bc745
mov dword [esp + 0x10], 0xc14cc355
mov dword [esp + 0x14], 0xbd03bf5c
mov dword [esp + 0x18], 0xb928bb23
mov dword [esp + 0x1c], 0xb538b727
mov dword [esp + 0x20], 0xb1b2b333
lea esi, [esp + 0x24]
mov word [esp + 0x24], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 8]
lea edx, [ebx + 0x33]
mov edi, 0xcc
sub edi, ebx
or edx, ecx
not ecx
or ecx, edi
and ecx, edx
inc cl
mov byte [esp + ebx + 8], cl
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
cmp ebx, 0x1e
jb 0x4233b0
lea edx, [esp + 0xd4]
lea ebx, [esp + 8]
mov edi, edx
mov ecx, 7
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0xf0]
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov dword [esp + 8], 0x137b115c
mov dword [esp + 0xc], 0x1f7d1d8f
mov dword [esp + 0x10], 0x1b88198f
mov dword [esp + 0x14], 0x7760568
mov dword [esp + 0x18], 0x340017c
lea ebx, [esp + 0x1c]
mov word [esp + 0x1c], 0xd0c
mov dword [esp + 0x1e], 0
mov byte [esp + 0x22], 0
mov edi, 4
mov esi, 0xfb
nop
mov ebp, esi
and ebp, 0x94
mov ecx, edi
and ecx, 0x2b
or ecx, ebp
xor cl, byte [esp + edi + 4]
xor cl, 0x94
add cl, 0xec
mov byte [esp + edi + 4], cl
inc edi
dec esi
cmp edi, 0x1f
jne case.default.0x4234d3
lea esi, [esp + 0xbe]
lea ebp, [esp + 8]
mov edi, esi
mov ecx, 5
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
lea edi, [esp + 0xd2]
mov ecx, 1
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], esi
mov eax, dword [esp + 0x44]
add eax, 2
mov dword [esp + 0x6c], eax
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x54], 0
cmp ecx, 0xc
setne al
xor ecx, ecx
jmp dword [eax*4 + 0x443038]
jmp dword [0x443040]
push dword [esp + 0x44]
call fcn.00408170
add esp, 4
mov eax, dword [esp + 0x54]
and al, 1
add esp, 0xf0
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esp + ecx + 0x8c]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edx + eax + 2], 0
lea eax, [eax + 2]
jne 0x423530
mov dword [esp + 0x40], edx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
mov edx, eax
sar edx, 1
mov eax, dword [esp + 0x64]
lea ecx, [edx + eax]
mov dword [esp + 0x58], edx
add edx, eax
add edx, 0xd
lea eax, [ecx*2 + 0x1a]
test edx, edx
jns 0x42356b
mov eax, 0xffffffff
push eax
call fcn.00408160
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x44]
movzx ecx, word [eax]
mov eax, edi
test cx, cx
je 0x4235a1
mov edx, dword [esp + 0x6c]
mov eax, edi
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423590
mov word [eax], 0x5c
mov dword [esp + 8], 0x8f528924
mov dword [esp + 0xc], 0x83258d3f
mov dword [esp + 0x10], 0x873a8121
mov dword [esp + 0x14], 0x9b4d8564
mov dword [esp + 0x18], 0x9f3f992c
mov dword [esp + 0x1c], 0x93379d28
mov word [esp + 0x20], 0x9190
lea ecx, [esp + 8]
mov byte [ecx + 0x1c], 0
mov word [ecx + 0x1a], 0
mov ecx, 0x85941662
movzx edx, byte [esp + ecx + 0x7a6be9a6]
xor edx, ecx
mov esi, edx
and esi, 0x15
xor edx, 0x15
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx + 0x7a6be9a6], dl
inc ecx
cmp ecx, 0x8594167f
jne 0x4235f0
add eax, 2
mov edx, dword [esp + 0x40]
movzx ecx, word [edx]
test cx, cx
je 0x423641
add edx, 2
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423630
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x423671
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423660
mov word [eax], 0
lea eax, [esp + 0x60]
push 0x60
push 3
push 0x120089
push eax
mov dword [esp + 0x98], edi
push edi
call fcn.0043ba40
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x443048]
xor ebx, ebx
jmp dword [0x4430b8]
lea eax, [esp + 0x80]
push 0
push eax
push dword [esp + 0x68]
call fcn.0043bda0
add esp, 0xc
not eax
shr eax, 0x1f
xor esi, esi
xor ebx, ebx
jmp dword [eax*4 + 0x443050]
mov esi, dword [esp + 0x80]
lea eax, [esi + 1]
push eax
call fcn.00408160
add esp, 4
push 0
push esi
mov dword [esp + 0x70], eax
push eax
push dword [esp + 0x6c]
call fcn.0043be80
add esp, 0x10
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x443058]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x68]
mov byte [ecx + eax], 0
push ecx
call fcn.00401000
add esp, 4
xor ecx, ecx
mov dword [esp + 0x5c], eax
test eax, eax
setne cl
xor ebx, ebx
jmp dword [ecx*4 + 0x443060]
jmp dword [0x44306c]
push dword [esp + 0x5c]
call fcn.00401950
add esp, 4
mov dword [esp + 8], 0x343f0a0d
mov dword [esp + 0xc], 0x1021802
mov dword [esp + 0x10], 0x2c0830ca
mov dword [esp + 0x14], 0x191a001a
mov dword [esp + 0x18], 0x1c2f2b2b
mov dword [esp + 0x1c], 0x820827
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xa5
xor dl, byte [esp + ecx + 8]
add dl, 0xc7
mov byte [esp + ecx + 8], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x18
jb 0x4237a0
lea ecx, [esp + 8]
push ecx
push eax
call fcn.00401a90
add esp, 8
mov ecx, 0xffffffff
mov edx, 0xfffffffd
nop
nop
nop
nop
nop
nop
nop
nop
add edx, 3
cmp byte [eax + ecx + 1], 0
lea ecx, [ecx + 1]
jne 0x4237e0
shr edx, 2
mov esi, ecx
mov dword [esp], ecx
movzx ecx, byte [eax + ecx - 1]
cmp ecx, 0x3d
je 0x423804
cmp ecx, 0x2e
jne 0x423805
dec edx
mov ecx, dword [esp]
movzx ecx, byte [eax + ecx - 2]
cmp ecx, 0x3d
mov dword [esp + 0x48], eax
je 0x42381b
cmp ecx, 0x2e
jne 0x42381c
dec edx
mov dword [esp + 0x84], edx
lea eax, [edx + 1]
push eax
call fcn.00408160
add esp, 4
mov dword [esp + 0x3c], eax
cmp dword [esp], 0
je 0x42392a
xor esi, esi
xor edi, edi
jmp 0x423869
mov ebp, dword [esp + 4]
mov eax, edi
and eax, 4
xor edi, 4
lea edi, [edi + eax*2]
mov esi, ebp
cmp edi, ecx
jae 0x42392a
mov ebp, dword [esp + 0x48]
movzx eax, byte [ebp + edi]
push eax
call fcn.004187c0
add esp, 4
mov ebx, eax
movzx eax, byte [ebp + edi + 1]
push eax
call fcn.004187c0
mov ecx, dword [esp + 4]
add esp, 4
mov bh, al
lea eax, [esi + 1]
mov dword [esp + 4], eax
shl bl, 2
mov al, bh
shr al, 4
and al, 3
or al, bl
mov edx, dword [esp + 0x3c]
mov byte [edx + esi], al
lea eax, [edi + 2]
cmp eax, ecx
jae 0x423850
movzx eax, byte [ebp + eax]
push eax
call fcn.004187c0
mov ecx, dword [esp + 4]
add esp, 4
cmp al, 0x40
mov ebp, dword [esp + 4]
je 0x423854
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
lea ebp, [esi + 2]
mov edx, dword [esp + 0x3c]
mov byte [edx + esi + 1], al
lea eax, [edi + 3]
cmp eax, ecx
jae 0x423854
mov ecx, dword [esp + 0x48]
movzx eax, byte [ecx + eax]
push eax
call fcn.004187c0
add esp, 4
cmp al, 0x40
je 0x423922
shl bl, 6
mov ecx, eax
and cl, bl
add cl, cl
xor bl, al
add bl, cl
mov eax, dword [esp + 0x3c]
mov byte [eax + esi + 2], bl
xor ebp, 1
and esi, 1
lea ebp, [ebp + esi*2]
mov ecx, dword [esp]
jmp 0x423854
mov eax, dword [esp + 0x84]
add eax, 0xfffffffb
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x3c]
add eax, 5
mov dword [esp + 0x7c], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
push 0x14e20a34
push dword [0x4483a8]
call fcn.0043aff0
add esp, 8
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x78]
push ecx
push 0
push 0
push 0
push 0
push 0
push edx
call eax
jmp case.0x4234d3.12
mov eax, dword [esp + 0x48]
add eax, 0xfffffffb
mov dword [esp + 0x78], eax
mov esi, dword [esp]
mov eax, esi
add eax, 5
mov dword [esp + 0x7c], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
push 0x14e20a34
push dword [0x4483a8]
call fcn.0043aff0
add esp, 8
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x78]
push ecx
push 0
push 0
push 0
push 0
push 0
push edx
call eax
jmp dword [0x443070]
push dword [esp + 0x5c]
call fcn.00401950
add esp, 4
mov dword [esp + 8], 0x343f0a0d
mov dword [esp + 0xc], 0x1021802
mov dword [esp + 0x10], 0x2c0830ca
mov dword [esp + 0x14], 0x191a001a
mov dword [esp + 0x18], 0x1c2f2b2b
mov dword [esp + 0x1c], 0x820827
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xa5
xor dl, byte [esp + ecx + 8]
add dl, 0xc7
mov byte [esp + ecx + 8], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x18
jb 0x423a20
lea ecx, [esp + 8]
push ecx
push eax
call fcn.00401a90
add esp, 8
mov ecx, 0xffffffff
mov edx, 0xfffffffd
nop
nop
nop
nop
nop
nop
nop
nop
add edx, 3
cmp byte [eax + ecx + 1], 0
lea ecx, [ecx + 1]
jne 0x423a60
shr edx, 2
mov esi, ecx
mov dword [esp + 4], ecx
movzx ecx, byte [eax + ecx - 1]
cmp ecx, 0x3d
je 0x423a85
cmp ecx, 0x2e
jne 0x423a86
dec edx
mov ecx, dword [esp + 4]
movzx ecx, byte [eax + ecx - 2]
cmp ecx, 0x3d
mov dword [esp + 0x3c], eax
je 0x423a9d
cmp ecx, 0x2e
jne 0x423a9e
dec edx
mov dword [esp + 0x48], edx
lea eax, [edx + 1]
push eax
call fcn.00408160
add esp, 4
mov dword [esp], eax
cmp dword [esp + 4], 0
je 0x423980
xor edi, edi
xor ebp, ebp
jmp 0x423b06
shl bl, 6
mov ecx, eax
and cl, bl
add cl, cl
xor bl, al
add bl, cl
mov eax, dword [esp]
mov byte [eax + edi + 2], bl
mov edx, esi
xor edx, 1
and edi, 1
lea edx, [edx + edi*2]
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebp
and eax, 4
xor ebp, 4
lea ebp, [ebp + eax*2]
mov edi, edx
cmp ebp, ecx
jae 0x423980
mov esi, dword [esp + 0x3c]
movzx eax, byte [esi + ebp]
push eax
call fcn.004187c0
add esp, 4
mov ebx, eax
movzx eax, byte [esi + ebp + 1]
push eax
call fcn.004187c0
add esp, 4
mov bh, al
lea edx, [edi + 1]
shl bl, 2
shr al, 4
and al, 3
or al, bl
mov ecx, dword [esp]
mov byte [ecx + edi], al
mov ecx, dword [esp + 4]
lea eax, [ebp + 2]
cmp eax, ecx
jae 0x423af0
movzx eax, byte [esi + eax]
push eax
mov esi, edx
call fcn.004187c0
mov edx, esi
mov ecx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x423af0
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
lea edx, [edi + 2]
mov ecx, dword [esp]
mov byte [ecx + edi + 1], al
mov ecx, dword [esp + 4]
lea eax, [ebp + 3]
cmp eax, ecx
jae 0x423af0
mov esi, edx
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ecx + eax]
push eax
call fcn.004187c0
add esp, 4
cmp al, 0x40
jne 0x423ac2
mov ecx, dword [esp + 4]
mov edx, esi
jmp 0x423af0
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x443078]
xor ebx, ebx
jmp dword [0x443088]
mov eax, dword [esp + 0x70]
add eax, 0x10
cmp dword [esp + 0x58], 0xfffffff8
jge 0x423bd4
mov eax, 0xffffffff
push eax
call fcn.00408160
add esp, 4
mov edi, eax
mov dword [esp + 8], 0x69ce6bb5
mov dword [esp + 0xc], 0x6dbc6ff8
mov dword [esp + 0x10], 0x51ca53f8
mov dword [esp + 0x14], 0x555657c4
mov word [esp + 0x18], 0
mov eax, 0x97
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x8f]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
add ecx, 0xdb82e56d
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov edx, ecx
xor edx, 0x61
and ecx, 0x1e
add ecx, ecx
sub ecx, edx
mov byte [esp + eax - 0x8f], cl
inc eax
cmp eax, 0xa9
jne 0x423c10
mov eax, dword [esp + 0x40]
movzx ecx, word [eax]
mov eax, edi
test cx, cx
je 0x423c81
mov eax, dword [esp + 0x40]
lea edx, [eax + 2]
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423c70
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x423cb1
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423ca0
mov word [eax], 0
mov ecx, dword [esp + 0x104]
push dword [esp + 0x4c]
push dword [esp + 0x54]
push edi
call fcn.00408ee0
mov ebx, eax
jmp dword [0x443080]
push edi
call fcn.00408170
add esp, 4
push 0xbe5098bb
push dword [0x448390]
call fcn.0043aff0
add esp, 8
push dword [esp + 0x50]
call eax
jmp dword [0x443088]
push esi
call fcn.00408170
add esp, 4
push dword [esp + 0x5c]
call fcn.00401bc0
add esp, 4
mov eax, dword [case.0x4234d3.23]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor esi, esi
jmp dword [0x4430a0]
push dword [esp + 0x68]
call fcn.00408170
add esp, 4
mov ebp, dword [esp + 0x60]
mov dword [esp + 8], 0x5c5d5e5f
mov byte [esp + 0xc], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi + 8]
mov eax, edx
not eax
and eax, 0xf6
mov ecx, edx
xor ecx, 0xf6
or edx, 9
and edx, ecx
or edx, eax
mov eax, 0x6f
sub eax, esi
and eax, 0x66
mov ecx, esi
and ecx, 1
or eax, ecx
xor eax, edx
add al, 0x30
mov byte [esp + esi + 8], al
mov eax, esi
not ecx
add ecx, esi
mov edx, esi
xor edx, 0xfffffffe
or eax, 1
and eax, edx
lea esi, [eax + ecx]
add esi, 2
cmp esi, 5
jb 0x423d50
mov ecx, dword [0x44839c]
test ecx, ecx
je 0x423de0
mov edx, dword [esp + 8]
xor esi, esi
mov edi, dword [0x4483a0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xb62b8d10
je 0x423dd0
inc esi
cmp ecx, esi
jne 0x423dc0
jmp 0x423de0
mov eax, dword [edi + esi*8 + 4]
cmp eax, edx
jne 0x4240f5
nop
nop
nop
nop
jmp dword [0x4430b8]
push ebp
push 1
push eax
push dword [0x4483a4]
call fcn.00437ec0
add esp, 0x10
jmp dword [0x4430b8]
int3