Function at 0x4fdb20
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, 0xfffffff0
sub esp, 0xd0
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x64], eax
je 0x4fdb8e
cmp eax, 2
jne 0x4fdbb3
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax + 0x14]
mov esi, dword [edx + 0x28]
mov edi, dword [eax + 8]
mov ebx, dword [eax + 0x10]
mov dword [esp + 8], ecx
mov ecx, dword [eax + 0x18]
cmp esi, 5
mov dword [esp + 0x14], edi
mov dword [esp], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x20], ecx
mov dword [esp + 4], eax
jb 0x4fdbc3
mov eax, dword [edx + 4]
test eax, eax
je 0x4fdc07
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 8]
jmp 0x4fdbcf
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x28]
cmp eax, 5
jb 0x4fdc4c
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x4fdc8b
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + 8]
jmp 0x4fdc55
mov eax, dword [ebp + 8]
mov bl, 1
mov dword [eax], 0
jmp 0x4fdd76
test esi, esi
je 0x4fdc07
mov eax, dword [ebp + 0xc]
lea ecx, [eax + 8]
mov eax, esi
mov edx, dword [ecx + eax*8 - 4]
bsr ecx, dword [ecx + eax*8 - 8]
mov edi, 0x3f
cmovne edi, ecx
bsr ecx, edx
xor edi, 0x1f
xor ecx, 0x1f
add edi, 0x20
test edx, edx
cmove ecx, edi
shl eax, 6
sub eax, ecx
cmp eax, 0x1000
jbe 0x4fdc07
mov eax, 0xb
jmp 0x4fdcb7
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0x58]
cmp edi, 5
jb 0x4fdca7
mov edi, dword [eax + 0x34]
mov ecx, dword [eax + 0x38]
mov eax, 0xc
test edi, edi
je 0x4fdcb7
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
cmp edi, 1
jne 0x4fdce6
cmp edx, 2
mov edi, ecx
sbb edi, 0
mov edi, ebx
jae 0x4fde0c
jmp 0x4fdced
test eax, eax
je 0x4fdc8b
lea edx, [ecx + 8]
mov ecx, eax
mov esi, dword [edx + ecx*8 - 4]
bsr edx, dword [edx + ecx*8 - 8]
mov edi, 0x3f
cmovne edi, edx
bsr edx, esi
xor edi, 0x1f
xor edx, 0x1f
add edi, 0x20
test esi, esi
cmove edx, edi
shl ecx, 6
sub ecx, edx
cmp ecx, 0x1000
jbe 0x4fdc8b
mov ecx, 0xb
jmp 0x4fdce1
mov ecx, dword [ebp + 0xc]
mov edi, dword [ecx + 0x58]
cmp edi, 5
jb 0x4fdcb9
mov edi, dword [ecx + 0x34]
mov edx, dword [ecx + 0x38]
mov ecx, 0xc
test edi, edi
jne 0x4fdcc5
jmp 0x4fdce1
lea ecx, [eax + 0x38]
mov eax, 0xc
test edi, edi
jne 0x4fdc29
jmp 0x4fdceb
lea edx, [ecx + 0x38]
mov ecx, 0xc
test edi, edi
je 0x4fdce1
mov esi, dword [edx]
mov edx, dword [edx + 4]
cmp edi, 1
jne 0x4fde26
cmp esi, 2
mov edi, edx
sbb edi, 0
jae 0x4fde1e
jmp 0x4fde2b
mov eax, 0xd
mov edi, ebx
mov esi, dword [ebp + 8]
mov dword [esi], eax
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x20]
mov dword [esi + 4], edx
test ecx, ecx
je 0x4fdd16
cmp dword [esp + 0x14], 0
je 0x4fdd16
mov eax, dword [0x6074a0]
push ecx
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov esi, dword [esp + 0x18]
mov eax, dword [esi]
push dword [esp]
call eax
add esp, 4
cmp dword [esi + 4], 0
je 0x4fdd4a
cmp dword [esi + 8], 9
jae 0x4fdd35
mov ecx, dword [esp]
jmp 0x4fdd3b
mov ecx, dword [esp]
mov ecx, dword [ecx - 4]
mov eax, dword [0x6074a0]
push ecx
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov esi, dword [esp + 8]
mov eax, dword [esi]
push edi
call eax
add esp, 4
cmp dword [esi + 4], 0
je 0x4fdd74
cmp dword [esi + 8], 9
jb 0x4fdd65
mov edi, dword [edi - 4]
mov eax, dword [0x6074a0]
push edi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
xor ebx, ebx
cmp dword [esp + 0x64], 2
jne 0x4fde36
test bl, bl
je 0x4fde3e
mov eax, dword [ebp + 0x10]
mov esi, dword [eax + 0x14]
mov edi, dword [eax + 0x10]
mov eax, dword [esi]
push edi
call eax
add esp, 4
cmp dword [esi + 4], 0
je 0x4fddb8
cmp dword [esi + 8], 9
jb 0x4fdda9
mov edi, dword [edi - 4]
mov eax, dword [0x6074a0]
push edi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [ebp + 0x10]
mov esi, dword [eax + 0x1c]
mov edi, dword [eax + 0x18]
mov eax, dword [esi]
push edi
call eax
add esp, 4
cmp dword [esi + 4], 0
je 0x4fdde7
cmp dword [esi + 8], 9
jb 0x4fddd8
mov edi, dword [edi - 4]
mov eax, dword [0x6074a0]
push edi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
test eax, eax
je 0x4fde3e
mov ecx, dword [ebp + 0x10]
cmp dword [ecx + 8], 0
je 0x4fde3e
mov ecx, dword [0x6074a0]
push eax
push 0
push dword [ecx]
call sub.KERNEL32.dll_HeapFree
jmp 0x4fde3e
test ecx, 0xfffffffe
je 0x4fde49
mov eax, 0xd
jmp 0x4fdced
test edx, 0xfffffffe
je 0x4fde65
mov ecx, 0xd
mov eax, dword [ebp + 8]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov dword [eax + 8], edx
mov ecx, dword [ebp + 0x10]
call fcn.004fab30
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp esi, 5
jb 0x4fde7d
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x20]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x4fdf7c
mov eax, dword [eax + 8]
jmp 0x4fde91
cmp eax, 5
jb 0x4fded8
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx + 4]
test ecx, ecx
je 0x4fdf17
mov edx, dword [edx + 8]
jmp 0x4fdee4
mov ecx, dword [esp + 0x20]
test esi, esi
je 0x4fdf7c
mov eax, dword [ebp + 0xc]
mov ebx, esi
add eax, 8
mov ecx, dword [eax + ebx*8 - 4]
bsr eax, dword [eax + ebx*8 - 8]
mov edx, 0x3f
cmovne edx, eax
bsr eax, ecx
xor edx, 0x1f
xor eax, 0x1f
add edx, 0x20
test ecx, ecx
cmove eax, edx
shl ebx, 6
or ebx, 7
sub ebx, eax
mov eax, ebx
mov ebx, 1
cmp eax, 0x58
mov dword [esp + 0xc], eax
jae 0x4fe013
mov ecx, dword [esp + 0x20]
jmp 0x4fdf81
test eax, eax
je 0x4fdf17
mov ecx, dword [ebp + 0xc]
lea edx, [ecx + 8]
mov ecx, eax
mov esi, dword [edx + ecx*8 - 4]
bsr edx, dword [edx + ecx*8 - 8]
mov edi, 0x3f
cmovne edi, edx
bsr edx, esi
xor edi, 0x1f
xor edx, 0x1f
add edi, 0x20
test esi, esi
cmove edx, edi
shl ecx, 6
or ecx, 7
sub ecx, edx
cmp ecx, 0x58
jae 0x4fe06b
mov eax, 1
mov ch, byte [esp + 0x4a]
mov ebx, dword [ebp + 8]
movzx edi, word [esp + 0x48]
movsd xmm2, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x68]
movsd xmm3, qword [esp + 0x78]
mov word [ebx + 0x11], di
mov byte [ebx + 0x13], ch
mov edi, dword [esp + 0x88]
movsd qword [ebx + 0x20], xmm2
movsd xmm2, qword [esp + 0x80]
movsd qword [ebx + 0x18], xmm1
movsd qword [ebx + 0x28], xmm3
mov dword [ebx + 0x38], edi
movsd qword [ebx + 0x30], xmm2
mov dword [ebx], eax
mov dword [ebx + 4], esi
movlps qword [ebx + 8], xmm0
mov byte [ebx + 0x10], cl
mov dword [ebx + 0x14], edx
jmp 0x4fde36
mov ebx, 1
test ecx, ecx
je 0x4fdfa5
cmp dword [esp + 0x14], 0
je 0x4fdfa5
mov eax, dword [0x6074a0]
push ecx
push 0
push dword [eax]
movaps xmmword [esp + 0x2c], xmm2
call sub.KERNEL32.dll_HeapFree
movaps xmm2, xmmword [esp + 0x20]
movzx eax, byte [esp + 0x6a]
mov ecx, dword [ebp + 8]
movsd xmm0, qword [esp + 0x6b]
mov esi, dword [esp + 0x8b]
movsd xmm1, qword [esp + 0x73]
movzx edx, byte [esp + 0xc]
mov byte [ecx + 0x17], al
movzx eax, word [esp + 0x68]
mov word [ecx + 0x15], ax
movsd qword [ecx + 0x18], xmm0
movsd xmm0, qword [esp + 0x7b]
mov dword [ecx + 0x38], esi
movsd qword [ecx + 0x20], xmm1
mov esi, dword [esp + 0x44]
movsd qword [ecx + 0x28], xmm0
movsd xmm0, qword [esp + 0x83]
movsd qword [ecx + 0x30], xmm0
mov dword [ecx], ebx
mov ebx, dword [esp + 0x58]
mov dword [ecx + 4], ebx
movlps qword [ecx + 8], xmm2
mov dword [ecx + 0x10], esi
mov byte [ecx + 0x14], dl
jmp 0x4fdd16
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
push edi
call eax
add esp, 4
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0xc]
shr ecx, 3
cmp ecx, dword [ebp + 0x18]
jne 0x4fdecf
mov eax, dword [esp + 0x40]
lea eax, [eax + eax + 2]
cmp ecx, eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x60], eax
jb 0x4fdf81
mov eax, dword [ebp + 0xc]
cmp esi, 5
jb 0x4fe37d
mov esi, dword [eax + 4]
test esi, esi
je 0x4fe5bd
mov eax, dword [eax + 8]
jmp 0x4fe380
mov ecx, dword [ebp + 0xc]
cmp eax, 5
jb 0x4fe083
mov eax, dword [ecx + 4]
test eax, eax
je 0x4fe588
mov ecx, dword [ecx + 8]
jmp 0x4fe086
add ecx, 8
mov edx, dword [ecx + eax*8 - 4]
bsr ecx, dword [ecx + eax*8 - 8]
mov esi, 0x3f
cmovne esi, ecx
bsr ecx, edx
xor esi, 0x1f
xor ecx, 0x1f
add esi, 0x20
test edx, edx
cmove ecx, esi
shl eax, 6
or eax, 7
sub eax, ecx
shr eax, 3
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x90]
push eax
push dword [ebp + 0x18]
push dword [ebp + 0x14]
call fcn.004feb10
add esp, 0xc
mov eax, dword [esp + 0x90]
cmp eax, 0x12
jne 0x4fe2f3
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
mov edi, dword [esp + 0x94]
test ecx, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ecx
je 0x4fe8f4
xor eax, eax
cmp byte [edi], 0
sete al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 0x14], al
cmp dword [esp + 0x20], 2
jb 0x4fe8fd
movzx eax, byte [edi + 1]
mov ecx, eax
not al
xor cl, 2
dec cl
and al, cl
shr al, 7
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 4], al
xor eax, eax
cmp dword [esp + 0x20], 3
mov ecx, 0
jb 0x4fe206
xor eax, eax
cmp byte [edi + 2], 0
sete al
push eax
call fcn.005497c0
add esp, 4
mov ebx, eax
push 1
call fcn.005497c0
add esp, 4
mov ecx, ebx
and al, cl
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
neg al
and al, 2
movzx ecx, al
mov eax, ebx
and al, 1
cmp dword [esp + 0x20], 3
je 0x4fe206
mov dword [esp + 8], edi
xor al, 1
mov edi, 3
mov dword [esp], ecx
mov ecx, dword [esp + 8]
mov esi, eax
xor eax, eax
cmp byte [ecx + edi], 0
sete al
push eax
call fcn.005497c0
add esp, 4
mov ebx, eax
mov eax, esi
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
and al, bl
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov edx, dword [esp]
movzx eax, al
lea ecx, [edi + 1]
dec bl
neg eax
xor edi, edx
and edi, eax
mov eax, esi
xor edx, edi
and al, bl
cmp dword [esp + 0x20], ecx
mov edi, ecx
mov dword [esp], edx
jne 0x4fe1a3
mov edi, dword [esp + 8]
mov ecx, dword [esp]
not al
and al, 1
mov esi, eax
mov eax, 9
mov dword [esp], ecx
sub eax, ecx
shr eax, 0x1f
push eax
call fcn.005497c0
add esp, 4
mov bh, byte [esp + 4]
and bh, byte [esp + 0x14]
mov bl, al
movzx eax, bh
push eax
call fcn.005497c0
add esp, 4
mov bh, al
mov eax, esi
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
and al, bh
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
and al, bl
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
test al, al
je 0x4fe58f
mov ecx, dword [esp]
mov esi, dword [esp + 0x20]
mov dword [esp + 8], edi
movzx edi, al
neg edi
inc ecx
and edi, ecx
cmp esi, edi
jb 0x4fe92d
sub esi, edi
mov ebx, 1
je 0x4fe2b7
setns al
js 0x4fe96b
movzx ecx, al
mov eax, dword [0x6074b4]
movzx eax, byte [eax]
mov dword [esp], ecx
push ecx
push esi
call fcn.00401610
add esp, 8
mov ebx, eax
test eax, eax
je 0x4fe972
add edi, dword [esp + 8]
push esi
push edi
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [esp + 0x18], 0
mov dword [eax + 4], ebx
mov bl, 1
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
mov dword [eax], 0x12
je 0x4fdd76
mov eax, dword [0x6074a0]
push dword [esp + 8]
jmp 0x4fe5ab
movzx edx, word [esp + 0xa1]
movsd xmm2, qword [esp + 0xb0]
movsd xmm1, qword [esp + 0xa8]
movsd xmm3, qword [esp + 0xb8]
mov edi, dword [esp + 0xc8]
mov esi, dword [esp + 0x94]
movsd xmm0, qword [esp + 0x98]
movzx ecx, byte [esp + 0xa0]
mov word [esp + 0x48], dx
movzx edx, byte [esp + 0xa3]
movsd qword [esp + 0x70], xmm2
movsd xmm2, qword [esp + 0xc0]
movsd qword [esp + 0x68], xmm1
movsd qword [esp + 0x78], xmm3
mov dword [esp + 0x88], edi
mov byte [esp + 0x4a], dl
mov edx, dword [esp + 0xa4]
movsd qword [esp + 0x80], xmm2
jmp 0x4fdf1c
add eax, 8
mov ecx, dword [eax + esi*8 - 4]
bsr eax, dword [eax + esi*8 - 8]
mov edx, 0x3f
cmovne edx, eax
bsr eax, ecx
xor edx, 0x1f
xor eax, 0x1f
add edx, 0x20
test ecx, ecx
cmove eax, edx
shl esi, 6
or esi, 7
sub esi, eax
shr esi, 3
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x90]
push esi
push dword [ebp + 0x18]
push dword [ebp + 0x14]
call fcn.004feb10
add esp, 0xc
mov ebx, dword [esp + 0x90]
cmp ebx, 0x12
jne 0x4fe507
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 4]
mov ecx, 1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x98]
test edx, edx
cmovne ecx, edx
cmove ebx, edx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
cmove eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0xc]
push ebx
mov dword [esp + 0x60], ecx
push ecx
push edi
mov dword [esp + 0x48], edi
call eax
add esp, 0xc
mov eax, dword [esi + 0x10]
push edi
call eax
add esp, 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], edx
cmp dword [esp + 0x4c], 0
je 0x4fe917
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp byte [ecx], 0
sete al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 0x1f], al
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x4c]
lea ecx, [eax - 1]
mov dword [esp + 0x44], ecx
sub ecx, edi
jb 0x4fe941
mov eax, dword [esp + 0x10]
lea esi, [eax + 1]
lea eax, [esi + edi]
mov dword [esp + 0xc], ecx
push ecx
mov dword [esp + 8], eax
push eax
push dword [esp + 0x20]
push dword [esp + 0xc]
push edi
push esi
call fcn.004fb740
add esp, 0x18
push edi
push esi
push dword [esp + 0x20]
push dword [esp + 0xc]
push dword [esp + 0x1c]
push dword [esp + 0x18]
call fcn.004fb740
add esp, 0x18
cmp edi, dword [esp + 0xc]
ja 0x4fe957
cmp edi, dword [esp + 0x50]
jne 0x4fe5b9
test edi, edi
je 0x4fe5c4
neg edi
xor esi, esi
mov bl, 1
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x54]
xor ecx, ecx
movzx eax, byte [eax + esi]
cmp al, byte [edx + esi]
sete cl
push ecx
call fcn.005497c0
add esp, 4
inc esi
mov ecx, edi
and bl, al
add ecx, esi
jne 0x4fe4dc
jmp 0x4fe5c6
mov eax, dword [esp + 0x94]
movsd xmm3, qword [esp + 0xad]
movsd xmm1, qword [esp + 0xb5]
movsd xmm2, qword [esp + 0x98]
movsd xmm0, qword [esp + 0xa5]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xa0]
movsd qword [esp + 0x70], xmm3
movsd qword [esp + 0x78], xmm1
movsd xmm3, qword [esp + 0xbd]
movsd xmm1, qword [esp + 0xc4]
movsd qword [esp + 0x68], xmm0
mov dword [esp + 0x44], eax
movzx eax, byte [esp + 0xa4]
movsd qword [esp + 0x80], xmm3
movsd qword [esp + 0x87], xmm1
mov byte [esp + 0xc], al
jmp 0x4fdecf
xor eax, eax
jmp 0x4fe0b3
mov eax, dword [ebp + 8]
cmp dword [esp + 0x18], 0
mov bl, 1
mov dword [eax], 1
je 0x4fdd76
mov eax, dword [0x6074a0]
push edi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
jmp 0x4fdd76
xor ebx, ebx
jmp 0x4fe5c6
xor esi, esi
jmp 0x4fe3ad
mov bl, 1
movzx eax, bl
push eax
call fcn.005497c0
add esp, 4
mov esi, dword [esp + 0x40]
mov ebx, eax
push 1
call fcn.005497c0
add esp, 4
mov byte [esp + 0x20], al
push 0
call fcn.005497c0
add esp, 4
mov bh, al
test esi, esi
je 0x4fe60a
xor edi, edi
cmp dword [esp + 0xc], esi
jbe 0x4fe7b9
mov edi, dword [esp + 4]
add edi, esi
jmp 0x4fe619
cmp dword [esp + 0x44], 0
mov edi, dword [esp + 4]
je 0x4fe7b7
xor eax, eax
cmp byte [edi], 0
mov byte [esp + 4], bh
mov byte [esp + 0x40], bl
sete al
push eax
call fcn.005497c0
add esp, 4
mov bh, al
movzx eax, byte [edi]
mov ecx, eax
not al
xor cl, 1
dec cl
and al, cl
shr al, 7
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov bl, al
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
not bl
and bl, 1
movzx eax, bl
push eax
call fcn.005497c0
add esp, 4
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 0x20], al
not bh
and bh, 1
movzx eax, bh
push eax
call fcn.005497c0
add esp, 4
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
or al, byte [esp + 4]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 4], al
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x10]
xor edi, edi
sub ecx, dword [esp + 0x4c]
lea eax, [eax + esi*2 + 2]
mov esi, 1
mov dword [esp + 0xc], eax
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0x58]
add eax, esi
cmp eax, 1
je 0x4fe7ac
mov ecx, dword [esp + 0xc]
xor eax, eax
cmp byte [ecx + esi - 1], 0
sete al
push eax
call fcn.005497c0
add esp, 4
mov bh, al
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + esi - 1]
mov ecx, eax
not al
xor cl, 1
dec cl
and al, cl
shr al, 7
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov bl, al
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 0x44], al
not bl
and bl, 1
movzx eax, bl
push eax
call fcn.005497c0
add esp, 4
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 0x20], al
not bh
and bh, 1
movzx eax, bh
push eax
call fcn.005497c0
add esp, 4
and al, byte [esp + 0x20]
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
movzx ecx, byte [esp + 0x44]
or al, byte [esp + 4]
mov edx, edi
xor edx, esi
inc esi
neg ecx
movzx eax, al
and edx, ecx
xor edi, edx
push eax
call fcn.005497c0
add esp, 4
mov byte [esp + 4], al
jmp 0x4fe6dc
movzx ebx, byte [esp + 0x40]
mov bh, byte [esp + 4]
jmp 0x4fe7b9
xor edi, edi
and bl, byte [esp + 0x1f]
movzx eax, bl
push eax
call fcn.005497c0
add esp, 4
not bh
mov bl, al
and bh, 1
movzx eax, bh
push eax
call fcn.005497c0
add esp, 4
and al, bl
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
mov ebx, eax
movzx eax, byte [esp + 0x20]
not al
and al, 1
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
and al, bl
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
cmp dword [esp + 0x50], 0
mov ebx, eax
je 0x4fe82a
mov eax, dword [0x6074a0]
push dword [esp + 0x54]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x14], 0
je 0x4fe843
mov eax, dword [0x6074a0]
push dword [esp + 0x5c]
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
mov eax, ebx
not al
and al, 1
movzx eax, al
push eax
call fcn.005497c0
add esp, 4
test al, al
je 0x4fe864
mov eax, dword [ebp + 8]
mov dword [eax], 1
jmp 0x4fe8d7
cmp bl, 1
mov byte [esp + 0x68], bl
jne 0x4fe981
add edi, dword [esp + 0x60]
mov esi, dword [esp + 0x4c]
cmp esi, edi
jb 0x4fe99e
sub esi, edi
mov ebx, 1
je 0x4fe8b6
setns al
js 0x4fe9af
movzx ecx, al
mov eax, dword [0x6074b4]
movzx eax, byte [eax]
mov dword [esp + 0x20], ecx
push ecx
push esi
call fcn.00401610
add esp, 8
mov ebx, eax
test eax, eax
je 0x4fe9b6
add edi, dword [esp + 0x10]
push esi
push edi
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [eax + 4], ebx
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
mov dword [eax], 0x12
cmp dword [esp + 0x38], 0
mov edi, dword [esp + 0x3c]
je 0x4fdd16
mov eax, dword [0x6074a0]
push dword [esp + 0x10]
jmp 0x4fdd0d
mov ecx, 0x5fc028
xor eax, eax
jmp 0x4fe907
mov ecx, 0x5fc038
mov eax, 1
push ecx
push eax
push eax
call fcn.00425270
add esp, 0xc
jmp 0x4fe9c3
push 0x5fc1a8
push 0
push 0
call fcn.00425270
add esp, 0xc
jmp 0x4fe9c3
push 0x5fc018
push esi
push edi
call fcn.00428790
add esp, 0xc
jmp 0x4fe9c3
push 0x5fc1b8
push 0x23
push 0x5fbb09
call fcn.004251d0
add esp, 0xc
jmp 0x4fe9c3
push 0x5fc1c8
push dword [esp + 0x10]
push edi
call fcn.004287f0
add esp, 0xc
jmp 0x4fe9c3
call fcn.0041a880
jmp 0x4fe9c3
push esi
push dword [esp + 4]
call fcn.0041a8c0
add esp, 8
jmp 0x4fe9c3
mov dword [esp + 0x90], 0
lea ecx, [esp + 0x68]
lea edx, [esp + 0x90]
call fcn.004faef0
jmp 0x4fe9c3
push 0x5fc198
push esi
push edi
call fcn.00428790
add esp, 0xc
jmp 0x4fe9c3
call fcn.0041a880
jmp 0x4fe9c3
push esi
push dword [esp + 0x24]
call fcn.0041a8c0
add esp, 8
ud2