Function at 0x4191c0
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, 0xf0
mov esi, esp
mov ebx, ecx
mov edi, dword [ebp + 8]
mov dword [esi + 0xdc], 0
mov dword [esi + 0xd8], 0
mov dword [esi + 0xd4], 0
mov dword [esi + 0xd0], 0
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0xc4], 2
mov dword [esi + 0xc8], 1
push 0x565577c1
push dword [0x447080]
call fcn.0043aff0
add esp, 8
lea ecx, [esi + 0x3c]
lea edx, [esi + 0xc0]
push ecx
push edx
push dword [ebp + 0xc]
push edi
call eax
test eax, eax
jne 0x4192f1
push 0xb646c33f
push dword [0x447080]
call fcn.0043aff0
add esp, 8
mov dword [esi + 8], eax
push 0xe7db718c
push dword [0x447080]
call fcn.0043aff0
add esp, 8
mov dword [esi + 0xc], eax
push 0xa3d60213
push dword [0x447080]
call fcn.0043aff0
add esp, 8
mov dword [esi + 0x10], eax
mov edi, dword [esi + 0x3c]
jmp 0x4192a3
mov edi, dword [edi + 0x1c]
test edi, edi
je 0x4192d6
push dword [edi + 0xc]
push dword [edi + 8]
push dword [edi + 4]
call dword [esi + 8]
mov dword [ebx], eax
cmp eax, 0xffffffff
je 0x4192a0
push dword [edi + 0x10]
push dword [edi + 0x18]
push eax
call dword [esi + 0xc]
cmp eax, 0xffffffff
jne 0x4192d6
push dword [ebx]
call dword [esi + 0x10]
mov dword [ebx], 0xffffffff
jmp 0x4192a0
push 0xeb17dc3b
push dword [0x447080]
call fcn.0043aff0
add esp, 8
push dword [esi + 0x3c]
call eax
mov edi, dword [ebp + 8]
xor eax, eax
cmp dword [ebx], 0xffffffff
je 0x419e47
mov ecx, dword [ebp + 0x10]
nop
cmp byte [ecx + eax], 0
lea eax, [eax + 1]
jne 0x419300
lea edx, [ecx + eax]
dec edx
mov dword [esi + 8], edx
add eax, ecx
neg eax
mov edx, eax
not ecx
mov dword [esi + 0xc], ecx
xor eax, eax
mov ecx, dword [ebp + 0xc]
cmp byte [edi + eax], 0
lea eax, [eax + 1]
jne 0x419320
mov dword [esi + 0x34], ebx
and edx, dword [ebp + 0x10]
mov dword [esi + 0x10], edx
lea ebx, [edi + eax]
dec ebx
add eax, edi
neg eax
not edi
mov dword [esi + 0x14], edi
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx + edi], 0
lea edi, [edi + 1]
jne 0x419350
mov edx, dword [esi + 8]
and edx, dword [esi + 0xc]
and eax, dword [ebp + 8]
add dword [esi + 0x10], eax
and ebx, dword [esi + 0x14]
add ebx, edx
lea eax, [ecx + edi]
dec eax
add edi, ecx
neg edi
and edi, ecx
add edi, dword [esi + 0x10]
sub ebx, edi
not ecx
and ecx, eax
lea eax, [ebx + ecx]
add eax, 0x93
and eax, 0xfffffffc
call fcn.00408130
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 8], eax
mov esp, eax
mov dword [esi + 0x44], 0x5d5ea384
mov dword [esi + 0x48], 0xbfb9be58
mov dword [esi + 0x4c], 0x99dca0bb
mov dword [esi + 0x50], 0x8b424241
mov dword [esi + 0x54], 0xdbb4
mov byte [esi + 0x58], 0
mov eax, 0x57
mov edx, 0xa8
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esi + eax - 0x13]
mov ecx, eax
xor ecx, edx
and ecx, edi
xor ecx, edx
mov bl, 0x4c
sub bl, cl
mov byte [esi + eax - 0x13], bl
inc eax
dec edx
cmp eax, 0x6c
jne 0x4193d0
mov dword [esi + 0x18], 0x79465055
mov byte [esi + 0x1c], 0x18
mov dword [esi + 0x1d], 0
mov dword [esi + 0x20], 0
mov eax, 0xe2b2cc3b
mov edx, 0xc4
nop
movzx edi, byte [esi + eax + 0x1d4d33dd]
mov ebx, edi
not ebx
or ebx, edx
or edi, eax
mov ecx, edi
not ecx
and ecx, ebx
movzx ebx, bl
xor ebx, edi
xor ebx, 0xffffff00
sub edi, ebx
add edi, ecx
mov ecx, edi
and ecx, 0x58
xor edi, 0xd8
lea ecx, [edi + ecx*2]
inc cl
mov byte [esi + eax + 0x1d4d33dd], cl
inc eax
dec edx
cmp eax, 0xe2b2cc47
jne 0x419410
movzx eax, byte [esi + 0x18]
mov edi, dword [esi + 8]
test al, al
je 0x41947b
lea edx, [esi + 0x19]
mov edi, dword [esi + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x419470
mov byte [edi], 0
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx]
test al, al
mov edx, dword [ebp + 8]
je 0x41949b
inc ecx
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x419490
mov byte [edi], 0
movzx eax, byte [esi + 0x44]
test al, al
je 0x4194bb
lea ecx, [esi + 0x45]
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4194b0
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x4194db
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x4194d0
mov dword [esi + 0xc], edi
mov byte [edi], 0x3a
mov dword [esi + 0x44], 0xa3bf0b05
mov dword [esi + 0x48], 0xd3cfdfd3
mov dword [esi + 0x4c], 0xe40a23d5
mov dword [esi + 0x50], 0xd0d5c7d9
mov dword [esi + 0x54], 0xefdfdac3
mov dword [esi + 0x58], 0xc83d6769
mov dword [esi + 0x5c], 0xd8c7cfce
mov dword [esi + 0x60], 0xc1c1ccf8
mov dword [esi + 0x64], 0xc3df113a
mov dword [esi + 0x68], 0xf3effff3
mov dword [esi + 0x6c], 0x18505cf5
mov dword [esi + 0x70], 0xe833e6f9
mov dword [esi + 0x74], 0xf411e3fd
mov dword [esi + 0x78], 0xd3e3e6ff
mov dword [esi + 0x7c], 0xd2e7022d
mov dword [esi + 0x80], 0x40e351e
mov dword [esi + 0x84], 0x23f1e3e5
mov dword [esi + 0x88], 0x61af81f
mov dword [esi + 0x8c], 0xf4eb1205
mov dword [esi + 0x90], 0xf0eb1011
mov dword [esi + 0x94], 0xd1fd11f0
mov dword [esi + 0x98], 0x10e11ce4
mov dword [esi + 0x9c], 0xa1affc03
mov dword [esi + 0xa0], 0xc21508e7
mov dword [esi + 0xa4], 0xe0100c1f
mov dword [esi + 0xa8], 0x32352e3b
mov dword [esi + 0xac], 0x3624fc04
mov dword [esi + 0xb0], 0x303f3636
mov dword [esi + 0xb4], 0xf2e2cb36
mov dword [esi + 0xb8], 0x8a8488ef
mov dword [esi + 0xbc], 0x9982
lea eax, [esi + 0x44]
mov ecx, 0xf090fb43
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax]
mov edx, ecx
or edx, ebx
lea edi, [ecx + 0xf6f0500]
and edi, ebx
not edx
or edx, edi
mov edi, edx
mov ebx, edx
xor ebx, 0xb2d4e853
add ebx, edx
and edx, 0x2440053
and edi, 0xd2b05ac
sub ebx, edi
add ebx, edx
lea edx, [ebx + ebx]
and edx, 2
mov edi, edx
and edi, ebx
or edx, ebx
xor edx, 1
add edx, edi
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0xf090fac7
jne 0x419600
mov edx, dword [esi + 0xc]
inc edx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx]
test al, al
je 0x41966b
inc ecx
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x419660
mov byte [edx], 0
movzx eax, byte [esi + 0x44]
test al, al
je 0x41968b
lea ecx, [esi + 0x45]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x419680
mov byte [edx], 0
mov edi, edx
mov ebx, dword [esi + 8]
sub edi, ebx
push 0xefae2064
push dword [0x447080]
call fcn.0043aff0
add esp, 8
push 0
push edi
push ebx
mov edi, dword [esi + 0x34]
push dword [edi]
call eax
cmp eax, 0xffffffff
jne 0x4196fa
cmp dword [edi], 0xffffffff
je 0x4196fa
push 0xea8d1240
push dword [0x447080]
call fcn.0043aff0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x447080]
call fcn.0043aff0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor eax, eax
jmp 0x419e47
cmp eax, 0xffffffff
je 0x41975c
push 0x400
call fcn.00408160
add esp, 4
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
add eax, 0x400
mov dword [esi + 0x20], eax
lea eax, [esi + 0x18]
mov ecx, edi
push eax
call fcn.00419e60
mov cl, 1
mov dword [esi + 0x10], ecx
test al, al
je 0x419e2f
mov ebx, dword [esi + 0x18]
mov edi, dword [esi + 0x1c]
mov edx, ebx
xor edx, edi
mov eax, ebx
not eax
and eax, edi
add eax, eax
mov ecx, eax
sub ecx, edx
cmp edi, dword [esi + 0x20]
mov dword [esi + 0x14], eax
mov dword [esi + 0xc], ebx
je 0x419763
mov eax, edi
sub eax, ebx
jmp 0x4198a7
xor eax, eax
jmp 0x419e47
mov dword [esi + 0x30], edx
mov dword [esi + 0x10], ecx
lea eax, [ecx + 1]
mov ecx, edi
sub ecx, ebx
mov edx, ecx
shr edx, 1
mov dword [esi + 8], ecx
mov dword [esi + 0x28], edx
add ecx, edx
cmp ecx, eax
ja 0x419782
mov ecx, eax
mov dword [esi + 0x38], ecx
push ecx
call fcn.00408160
add esp, 4
mov ebx, eax
cmp dword [esi + 0xc], 0
je 0x41988d
cmp ebx, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov dword [esi + 0x24], edi
mov dword [esi + 0x2c], ebx
jbe 0x4197e4
cmp edi, ebx
jbe 0x4197e4
test edx, edx
je 0x41987c
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
add ecx, eax
dec ecx
mov edx, dword [esi + 0x2c]
lea ebx, [edx + eax]
dec ebx
mov edi, eax
and edi, 7
je 0x41981e
neg edi
xor edx, edx
movzx eax, byte [ecx + edx]
mov byte [ebx + edx], al
dec edx
cmp edi, edx
jne 0x4197cf
add ecx, edx
add ebx, edx
add edx, dword [esi + 8]
jmp 0x419820
mov ecx, edx
shr ecx, 2
mov eax, dword [esi + 0xc]
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
and edx, 0xfffffffc
add ebx, edx
add edx, dword [esi + 0xc]
mov ecx, dword [esi + 0x28]
and ecx, 1
mov eax, edx
mov edi, ebx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test byte [esi + 8], 1
je 0x41987c
mov eax, dword [esi + 8]
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [ebx + eax], cl
jmp 0x41987c
mov edx, eax
mov eax, dword [esi + 0xc]
sub eax, dword [esi + 0x24]
cmp eax, 0xfffffff8
ja 0x41987c
neg edx
xor edi, edi
movzx eax, byte [ecx + edi]
mov byte [ebx + edi], al
movzx eax, byte [ecx + edi - 1]
mov byte [ebx + edi - 1], al
movzx eax, byte [ecx + edi - 2]
mov byte [ebx + edi - 2], al
movzx eax, byte [ecx + edi - 3]
mov byte [ebx + edi - 3], al
movzx eax, byte [ecx + edi - 4]
mov byte [ebx + edi - 4], al
movzx eax, byte [ecx + edi - 5]
mov byte [ebx + edi - 5], al
movzx eax, byte [ecx + edi - 6]
mov byte [ebx + edi - 6], al
movzx eax, byte [ecx + edi - 7]
mov byte [ebx + edi - 7], al
add edi, 0xfffffff8
cmp edx, edi
jne 0x41982f
push dword [esi + 0x18]
call fcn.00408170
add esp, 4
mov edi, dword [esi + 0x24]
mov ebx, dword [esi + 0x2c]
mov dword [esi + 0x18], ebx
mov ecx, dword [esi + 0x10]
lea eax, [ebx + ecx]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x38]
add eax, ebx
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov edx, dword [esi + 0x30]
mov dword [esi + 8], eax
cmp eax, ecx
jae 0x41997e
mov eax, dword [esi + 0xc]
add ecx, eax
sub ecx, edi
add ebx, dword [esi + 8]
cmp ecx, 1
jle 0x419939
add ebx, ecx
add dword [esi + 0x14], eax
mov eax, ecx
and eax, 7
je 0x4198f9
mov dword [esi + 0x30], edx
mov dword [esi + 0x24], edi
mov edi, ecx
neg eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx + ecx - 1]
mov byte [ebx + ecx], dl
dec ecx
cmp eax, ecx
jne 0x4198e0
add ebx, ecx
add edi, ecx
mov ecx, edi
mov edi, dword [esi + 0x24]
mov edx, dword [esi + 0x30]
sub edx, dword [esi + 0x14]
add edx, edi
cmp edx, 0xfffffff8
ja 0x41997e
neg ecx
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
mov ecx, dword [ebx + eax - 4]
mov dword [ebx + eax - 3], ecx
movzx ecx, word [ebx + eax - 8]
movzx edx, word [ebx + eax - 6]
mov word [ebx + eax - 5], dx
mov word [ebx + eax - 7], cx
mov ecx, edi
add eax, 0xfffffff8
cmp edi, eax
jne 0x419910
jmp 0x41997e
lea edi, [ebx + 1]
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x10]
shr ecx, 2
mov eax, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edx, dword [esi + 0x10]
and edx, 0xfffffffc
lea eax, [ebx + edx]
inc eax
add edx, ebx
mov ecx, dword [esi + 0x10]
shr ecx, 1
and ecx, 1
mov ebx, edx
mov edi, eax
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, dword [esi + 0x10]
test cl, 1
je 0x41997e
and ecx, 2
mov edi, ecx
movzx ecx, byte [edx + ecx]
mov byte [eax + edi], cl
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0x18]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x44], 0xd3d6d5d8
mov dword [esi + 0x48], 0xf6f8f4fb
mov dword [esi + 0x4c], 0xa0a08f8
mov byte [esi + 0x50], 0xdc
mov word [esi + 0x51], 0
mov byte [esi + 0x53], 0
mov ecx, 0x45ed4f78
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esi + ecx - 0x45ed4f34]
mov dword [esi + 8], edx
lea eax, [edi - 0x45ed4f79]
and eax, 0x85
mov ebx, ecx
and ebx, 0x45e54f7a
or ebx, eax
xor ebx, edx
xor ebx, 0x80085
lea eax, [edi + 0x3a12b087]
or eax, ebx
lea ebx, [eax + eax]
neg ebx
lea edx, [edi + ebx]
add edx, 0xba12b086
xor edx, dword [esi + 8]
lea ebx, [ecx + eax*2]
add ebx, 0xba12b101
and ebx, dword [esi + 8]
add ebx, ebx
sub ebx, edx
lea edx, [ebx*2 + 0x44bae54e]
add ebx, 0xa25d72a7
and edx, 2
mov eax, edx
and eax, ebx
or edx, ebx
xor edx, 1
add edx, eax
mov byte [esi + ecx - 0x45ed4f34], dl
inc ecx
dec edi
cmp ecx, 0x45ed4f88
jne 0x4199d0
movzx edx, byte [esi + 0x44]
mov edi, dword [esi + 0xc]
mov eax, edi
mov dword [esi + 8], edi
test dl, dl
je 0x419a9d
lea ebx, [esi + 0x44]
mov ecx, edi
mov dword [esi + 8], edi
jmp 0x419a77
movzx edx, byte [ebx]
test dl, dl
je 0x419a9d
movzx eax, byte [ecx]
test al, al
je 0x419e1b
inc ecx
inc ebx
mov edi, dword [esi + 8]
inc edi
cmp al, dl
je 0x419a93
mov eax, edi
mov dword [esi + 8], edi
mov ecx, edi
mov edi, dword [esi + 0xc]
je 0x419a70
lea ebx, [esi + 0x44]
jmp 0x419a70
cmp dword [esi + 8], 0
je 0x419e1b
mov ebx, dword [esi + 0x34]
jmp 0x419abb
cmp dl, al
mov ebx, dword [esi + 0x34]
je 0x419e2f
mov edx, edi
mov eax, dword [esi + 0x14]
sub edx, eax
je 0x419ae6
mov dword [esi + 0x14], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], edi
xor ecx, ecx
mov eax, dword [esi + 8]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
xor ecx, ecx
mov edi, dword [esi + 0xc]
mov eax, dword [esi + 0x14]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
add dword [esi + 0x1c], edx
mov ecx, ebx
lea eax, [esi + 0x18]
push eax
call fcn.00419e60
test al, al
je 0x419e28
mov edi, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
mov ecx, edi
xor ecx, edx
mov ebx, edi
not ebx
and ebx, edx
add ebx, ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x30], ecx
sub ebx, ecx
cmp edx, dword [esi + 0x20]
mov dword [esi + 0x10], eax
mov dword [esi + 0xc], edi
je 0x419b30
mov ecx, edx
sub ecx, edi
mov eax, edi
jmp 0x419c96
lea eax, [ebx + 1]
mov dword [esi + 0x14], edx
mov ecx, edx
sub ecx, edi
mov edx, ecx
shr edx, 1
mov dword [esi + 8], ecx
mov dword [esi + 0x28], edx
add ecx, edx
cmp ecx, eax
ja 0x419b4c
mov ecx, eax
mov dword [esi + 0x38], ecx
push ecx
call fcn.00408160
add esp, 4
mov edi, dword [esi + 0xc]
test edi, edi
je 0x419c7f
mov dword [esi + 0x40], ebx
cmp eax, edi
mov ebx, dword [esi + 8]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x2c], eax
jbe 0x419c2f
cmp ecx, eax
jbe 0x419c2f
test ebx, ebx
je 0x419c6e
mov edx, dword [esi + 8]
mov eax, dword [esi + 0xc]
add eax, edx
dec eax
mov ecx, dword [esi + 0x2c]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x419bc3
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x419bb0
add eax, edx
add ecx, edx
add edx, dword [esi + 8]
mov edi, dword [esi + 0xc]
sub edi, dword [esi + 0x14]
cmp edi, 0xfffffff8
ja 0x419c6e
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x419be0
jmp 0x419c6e
mov ecx, ebx
shr ecx, 2
mov edx, edi
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
lea edi, [eax + edx]
add edx, dword [esi + 0xc]
mov ecx, dword [esi + 0x28]
and ecx, 1
mov eax, edx
mov dword [esi + 0x28], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x419c6e
mov eax, dword [esi + 8]
and eax, 2
movzx ecx, byte [edx + eax]
mov edx, dword [esi + 0x28]
mov byte [edx + eax], cl
push dword [esi + 0x18]
call fcn.00408170
add esp, 4
mov ebx, dword [esi + 0x40]
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x18], eax
lea ecx, [eax + ebx]
mov dword [esi + 0x1c], ecx
mov ecx, dword [esi + 0x38]
add ecx, eax
mov dword [esi + 0x20], ecx
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x14]
mov dword [esi + 8], ecx
cmp ecx, ebx
jae 0x419d60
add ebx, dword [esi + 0xc]
sub ebx, edx
add eax, dword [esi + 8]
cmp ebx, 1
jle 0x419d15
add eax, ebx
mov edi, ebx
and edi, 7
je 0x419cd4
mov dword [esi + 0x14], edx
neg edi
xor ecx, ecx
nop
nop
movzx edx, byte [eax + ecx - 1]
mov byte [eax + ecx], dl
dec ecx
cmp edi, ecx
jne 0x419cc0
add eax, ecx
add ebx, ecx
mov edx, dword [esi + 0x14]
mov edi, dword [esi + 0xc]
add edi, dword [esi + 0x24]
mov ecx, dword [esi + 0x30]
add ecx, edx
not ecx
add ecx, edi
cmp ecx, 7
jb 0x419d60
neg ebx
xor edi, edi
nop
nop
nop
nop
mov ecx, dword [eax + edi - 4]
mov dword [eax + edi - 3], ecx
movzx ecx, word [eax + edi - 8]
movzx edx, word [eax + edi - 6]
mov word [eax + edi - 5], dx
mov word [eax + edi - 7], cx
add edi, 0xfffffff8
cmp ebx, edi
jne 0x419cf0
jmp 0x419d60
lea edi, [eax + 1]
mov ecx, ebx
shr ecx, 2
mov edx, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
lea edi, [eax + edx]
inc edi
add edx, eax
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, ebx
mov ebx, edx
mov dword [esi + 0xc], edi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, eax
test bl, 1
je 0x419d60
and ebx, 2
movzx ecx, byte [edx + ebx]
mov eax, dword [esi + 0xc]
mov byte [eax + ebx], cl
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0x18]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x1c], eax
mov word [esi + 0x44], 0x2f2d
mov byte [esi + 0x46], 0x16
lea eax, [esi + 0x47]
mov byte [eax + 4], 0
mov dword [eax], 0
mov ecx, 0x87fd1806
mov ebx, 0x7802e7f9
nop
nop
nop
nop
nop
movzx edx, byte [esi + ecx + 0x7802e83e]
mov dword [esi + 8], edx
mov eax, ecx
and eax, edx
add eax, eax
sub eax, edx
add eax, ebx
or eax, ebx
lea edx, [ecx + eax]
inc edx
mov edi, edx
and edi, 2
mov eax, edx
or edx, 2
imul edx, edi
xor edi, 2
and eax, 0xfffffffd
imul eax, edi
add edx, eax
lea eax, [ebx - 0x7802e780]
and eax, edx
xor edx, ecx
add eax, eax
sub edx, eax
add dl, byte [esi + 8]
add dl, 0xe2
mov byte [esi + ecx + 0x7802e83e], dl
inc ecx
dec ebx
cmp ecx, 0x87fd180e
jne 0x419da0
xor ecx, ecx
mov edi, dword [esi + 0xc]
nop
nop
nop
movzx edx, byte [edi + ecx]
movzx eax, byte [esi + ecx + 0x44]
test dl, dl
je 0x419ab0
inc ecx
cmp dl, al
je 0x419e00
jmp 0x419ab0
mov ecx, dword [esi + 0x34]
push 0x3ea
call fcn.00418ed0
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x18]
test eax, eax
je 0x419e44
cmp eax, dword [esi + 0x1c]
je 0x419e44
push eax
call fcn.00408170
add esp, 4
mov eax, dword [esi + 0x10]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc