Function at 0x405350
Capabilities:
Encode data using base64
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
mov dword [esp + 0x10], edi
movzx esi, word [edi]
test esi, esi
jne 0x403fdb
test ebx, ebx
je 0x403fdb
mov edi, ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0x10], edi
movzx esi, word [edi]
mov ebx, dword [esp + 0x134]
mov ecx, dword [ecx + 0x34]
mov eax, dword [ebx + 0x10]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x138]
add eax, 0xffffff38
test ecx, ecx
je 0x4040c1
cmp edx, eax
ja 0x408783
mov eax, dword [esp + 0xa0]
cmp edx, eax
cmovae eax, edx
mov ecx, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x138]
sub ecx, dword [esp + 0xa0]
sar ecx, 1
mov edx, dword [eax]
mov eax, 0x7fffffeb
sub eax, edx
cmp eax, ecx
jl 0x408760
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x138]
mov dword [ecx], eax
test ebp, ebp
je 0x4040a0
cmp ebp, dword [esp + 0xa8]
jbe 0x4040b4
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0xa8]
sub eax, ebp
and eax, 0xfffffffe
push eax
push ebp
push edi
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x20]
sub ebp, edi
movsd xmm2, qword [esp + 0xf0]
and ebp, 0xfffffffe
mov ecx, dword [esp + 0x144]
add esp, 0xc
sub edx, ebp
mov ebp, edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0xa0], edx
jmp 0x4040ca
mov edx, dword [esp + 0xa8]
mov dword [esp + 0x14], edx
mov dword [esp + 0xa0], edx
jmp 0x4040ca
mov edx, dword [esp + 0x14]
mov dword [esp + 0xa0], edx
jmp 0x4040ca
cmp dword [ebx + 0x24], eax
ja 0x408783
cmp dword [esp + 0x60], 0
je 0x40417d
test esi, esi
je 0x40417d
cmp esi, 0x5c
jne 0x40410b
cmp word [edi + 2], 0x45
jne 0x40410b
movsd xmm2, qword [esp + 0xe4]
add edi, 2
mov ecx, ebx
mov dword [esp + 0x60], 0
mov ebx, dword [esp + 0x34]
add edi, 2
jmp 0x403fbf
mov eax, dword [esp + 0x64]
test eax, eax
je 0x404130
test ecx, ecx
jne 0x404128
sub edi, dword [ebx + 0x18]
sar edi, 1
sub di, word [eax + 8]
mov word [eax + 0xa], di
mov edi, dword [esp + 0x10]
mov dword [esp + 0x64], 0
mov ecx, dword [esp + 0x48]
test ecx, 0x4000
je 0x40446c
mov eax, 0x70
mov dword [esp + 0x64], edx
mov word [edx], ax
lea eax, [edx + 2]
mov edx, 0xff
mov dword [eax + 2], 0
mov word [eax], dx
sub edi, dword [ebx + 0x18]
sar edi, 1
xor edx, edx
mov word [eax + 8], dx
lea edx, [eax + 0xa]
mov word [eax + 6], di
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
jmp 0x40446c
cmp esi, 0x2a
je 0x4041dc
cmp esi, 0x2b
je 0x4041dc
cmp esi, 0x3f
je 0x4041dc
cmp esi, 0x7b
jne 0x40419d
lea ecx, [edi + 2]
call fcn.00401760
test eax, eax
jne 0x4041dc
mov ecx, dword [esp + 0x64]
xor ebp, ebp
test ecx, ecx
je 0x4041e1
mov edx, dword [esp + 0xac]
mov eax, edx
dec edx
mov dword [esp + 0xac], edx
test eax, eax
jg 0x4041e1
cmp dword [esp + 0x138], ebp
jne 0x4041d6
sub edi, dword [ebx + 0x18]
sar edi, 1
sub di, word [ecx + 8]
mov word [ecx + 0xa], di
mov edi, dword [esp + 0x10]
mov dword [esp + 0x64], ebp
jmp 0x4041e1
mov ebp, 1
mov ebx, dword [esp + 0x48]
test bl, 8
je 0x40427d
mov ecx, dword [esp + 0x134]
mov eax, 0xff
cmp word [edi], ax
ja 0x40420c
mov eax, dword [ecx + 0xc]
test byte [esi + eax], 1
jne 0x406ab0
cmp esi, 0x23
jne 0x40427d
add edi, 2
mov dword [esp + 0x10], edi
movzx eax, word [edi]
test ax, ax
je 0x40427b
mov ebx, edi
mov edx, dword [ecx + 0x60]
mov esi, eax
mov ecx, dword [ecx + 0x1c]
test edx, edx
je 0x4042c5
cmp ebx, ecx
jae 0x4042fe
mov esi, dword [esp + 0x134]
push 1
add esi, 0x64
push esi
push ecx
mov ecx, edi
call fcn.00414670
mov ecx, dword [esp + 0x140]
add esp, 0xc
test eax, eax
je 0x404305
mov edx, dword [esi]
lea edi, [edx - 1]
lea edi, [ebx + edi*2]
mov dword [esp + 0x10], edi
cmp word [edi], 0
jne 0x406ab0
mov ebx, dword [esp + 0x48]
xor esi, esi
mov ecx, dword [esp + 0x134]
test ebx, 0x4000
je 0x40433d
test ebp, ebp
jne 0x40433d
mov eax, dword [esp + 0x14]
mov dword [esp + 0x64], eax
mov dword [eax], 0xff0070
mov dword [eax + 4], ebp
sub edi, dword [ecx + 0x18]
sar edi, 1
xor edx, edx
mov word [eax + 0xa], dx
lea edx, [eax + 0xc]
mov word [eax + 8], di
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
jmp 0x404341
mov eax, dword [esp + 0x134]
mov edx, dword [eax + 0x64]
lea eax, [edx + edx]
sub ecx, eax
cmp ebx, ecx
mov ecx, dword [esp + 0x134]
ja 0x404305
cmp si, word [ecx + 0x68]
jne 0x404305
cmp edx, 1
je 0x404263
mov ax, word [edi + 2]
cmp ax, word [ecx + 0x6a]
je 0x404263
jmp 0x404305
mov ecx, dword [esp + 0x134]
lea edi, [ebx + 2]
mov edx, 0xfc00
mov dword [esp + 0x10], edi
mov ebx, edi
mov ax, word [edi]
and ax, dx
mov edx, 0xdc00
cmp ax, dx
jne 0x40432c
lea ebx, [edi + 2]
mov edi, ebx
mov dword [esp + 0x10], edi
movzx eax, word [edi]
test ax, ax
je 0x404277
jmp 0x404222
mov edx, dword [esp + 0x14]
cmp esi, 0x7c
ja case.0x404351.1
movzx eax, byte [esi + 0x4087dc]
jmp dword [eax*4 + 0x4087a8]
xor ebp, ebp
mov dword [esp + 0x18], ebp
test bl, 2
je 0x4043a5
mov eax, dword [esp + 0x4c]
mov ecx, 0xffffffff
mov ebx, dword [esp + 0x34]
cmp eax, 0xfffffffe
movsd xmm2, qword [esp + 0xe4]
cmove eax, ecx
mov ecx, 0x1a
mov word [edx], cx
add edx, 2
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x134]
add edi, 2
mov dword [esp + 0x4c], eax
mov dword [esp + 0x14], edx
jmp 0x403fbf
mov ebx, dword [esp + 0x34]
mov ecx, 0x19
movsd xmm2, qword [esp + 0xe4]
mov word [edx], cx
add edx, 2
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x134]
add edi, 2
mov dword [esp + 0x14], edx
jmp 0x403fbf
movsd xmm2, qword [esp + 0xe4]
xor ebp, ebp
test bl, 2
mov dword [esp + 0x18], ebp
mov ebx, dword [esp + 0x34]
mov eax, ebp
setne al
add eax, 0x1b
mov word [edx], ax
add edx, 2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
add edi, 2
jmp 0x403fbf
mov eax, dword [esp + 0x4c]
mov ebp, 0xffffffff
mov esi, dword [esp + 0x38]
cmp eax, 0xfffffffe
movsd xmm2, qword [esp + 0xe4]
cmove eax, ebp
mov dword [esp + 0x58], esi
mov dword [esp + 0x4c], eax
mov ebp, edx
mov dword [esp + 0x30], eax
mov eax, ebx
mov ebx, dword [esp + 0x34]
shr eax, 2
and eax, 1
mov dword [esp + 0x18], ebp
or eax, 0xc
mov word [edx], ax
add edx, 2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
add edi, 2
jmp 0x403fbf
test dword [ecx + 0x4c], 0x2000000
jne 0x408215
mov ecx, dword [esp + 0x48]
mov bx, si
mov ebp, edx
and esi, 0xfc00
mov dword [esp + 0x18], ebp
mov word [esp + 0xbc], bx
mov edx, 1
cmp esi, 0xd800
jne 0x40554e
mov ax, word [edi + 2]
add edi, 2
mov esi, 0xfc00
and ax, si
mov esi, 0xdc00
cmp ax, si
jne 0x40554e
mov dword [esp + 0x10], edi
test cl, 1
mov ax, word [edi]
mov edx, 2
mov word [esp + 0xbe], ax
mov eax, 0
setne al
add eax, 0x1d
mov word [ebp], ax
lea eax, [ebp + 2]
jmp 0x405578
movzx eax, word [edi + 2]
mov ebp, edx
mov dword [esp + 0x18], ebp
cmp eax, 0x3a
je 0x4044f8
cmp eax, 0x2e
je 0x4044f8
cmp eax, 0x3d
jne 0x40450b
lea edx, [esp + 0x68]
mov ecx, edi
call fcn.00402f10
test eax, eax
jne 0x4082e4
xor edx, edx
mov dword [esp + 0x3c], edx
add edi, 2
mov dword [esp + 0x10], edi
movzx ecx, word [edi]
mov dword [esp + 0x28], ecx
cmp ecx, 0x5c
jne 0x40455f
cmp word [edi + 2], 0x45
lea esi, [edi + 2]
jne 0x404532
mov edi, esi
jmp 0x404511
mov edx, 3
mov ebx, 0x508bd0
nop dword [eax]
movzx ecx, word [esi]
lea esi, [esi + 2]
movzx eax, byte [ebx]
lea ebx, [ebx + 1]
dec edx
cmp cx, ax
jne 0x40456d
test edx, edx
jne 0x404540
mov edx, dword [esp + 0x3c]
add edi, 6
jmp 0x404511
test edx, edx
jne 0x404575
cmp ecx, 0x5e
jne 0x404575
lea edx, [ecx - 0x5d]
jmp 0x40450d
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
cmp ecx, 0x5d
jne 0x4045de
mov eax, dword [esp + 0x134]
test dword [eax + 0x4c], 0x2000000
je 0x4045de
mov esi, dword [esp + 0x4c]
test edx, edx
mov edx, dword [esp + 0x14]
mov ecx, 0xd
mov ebx, dword [esp + 0x34]
mov eax, 0x97
movsd xmm2, qword [esp + 0xe4]
cmovne eax, ecx
mov ecx, dword [esp + 0x134]
mov word [edx], ax
add edx, 2
mov edi, dword [esp + 0x10]
cmp esi, 0xfffffffe
mov eax, 0xffffffff
mov dword [esp + 0x14], edx
cmove esi, eax
add edi, 2
mov dword [esp + 0x4c], esi
mov dword [esp + 0x30], esi
jmp 0x403fbf
xor edx, edx
xor esi, esi
mov dword [esp + 0x20], edx
xor ebx, ebx
mov edx, dword [esp + 0x14]
xor ebp, ebp
add edx, 6
mov dword [esp + 0x40], esi
mov dword [esp + 0x24], ebx
xorps xmm0, xmm0
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], edx
mov dword [esp + 0x9c], edx
movups xmmword [esp + 0x78], xmm0
movups xmmword [esp + 0x88], xmm0
test ecx, ecx
je 0x4082c1
mov eax, ecx
mov dword [esp + 0x50], ebx
and eax, 0xfc00
mov esi, ebx
cmp eax, 0xd800
jne 0x40466e
movzx ecx, word [edi]
mov eax, ecx
mov dword [esp + 0x28], ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x40466e
movzx eax, word [edi + 2]
add edi, 2
and ecx, 0x3ff
mov dword [esp + 0x10], edi
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x138], 0
je 0x404699
sub edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x138]
sar edx, 1
add dword [ebx], edx
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
cmp dword [esp + 0x60], 0
je 0x4046c4
cmp ecx, 0x5c
jne 0x404d01
cmp word [edi + 2], 0x45
jne 0x404d01
mov dword [esp + 0x60], 0
add edi, 2
jmp 0x40541f
cmp ecx, 0x5b
jne 0x404903
movzx esi, word [edi + 2]
cmp esi, 0x3a
je 0x4046e4
cmp esi, 0x2e
je 0x4046e4
cmp esi, 0x3d
jne 0x404d01
lea edx, [esp + 0x68]
mov ecx, edi
call fcn.00402f10
test eax, eax
je 0x404cfd
mov dword [esp + 0x58], 0
cmp esi, 0x3a
jne 0x408238
add edi, 4
mov dword [esp + 0x10], edi
mov eax, edi
cmp word [edi], 0x5e
jne 0x404730
add edi, 2
mov dword [esp + 0x58], 1
mov dword [esp + 0x40], 1
mov eax, edi
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x68]
mov ebx, str.alpha
sub ecx, eax
mov dword [esp + 0x28], ebx
sar ecx, 1
mov al, 5
xor edx, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x2c], edx
nop dword [eax]
movzx ebp, al
cmp ecx, ebp
jne 0x4047d5
mov edx, ecx
mov esi, edi
test ecx, ecx
je 0x404779
movzx ecx, word [esi]
lea esi, [esi + 2]
movzx eax, byte [ebx]
lea ebx, [ebx + 1]
dec edx
cmp cx, ax
jne 0x4047c9
test edx, edx
jne 0x404763
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x4047ef
mov eax, dword [esp + 0x48]
test al, 1
je 0x404791
xor edx, edx
cmp ecx, 2
cmovle ecx, edx
mov ebx, dword [esp + 0x58]
test eax, 0x20000000
je 0x404812
mov eax, ebx
neg eax
sbb eax, eax
and eax, 0xe
add eax, ecx
mov edi, dword [eax*4 + 0x508c70]
test edi, edi
je 0x404812
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x24]
add edx, 2
mov dword [esp + 0x34], edx
add edi, 0xfffffffe
jmp 0x40541b
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov al, byte [edx + 0x509bd5]
inc edx
inc ebx
mov dword [esp + 0x2c], edx
add ebx, ebp
mov dword [esp + 0x28], ebx
test al, al
jne 0x404750
mov esi, dword [esp + 0x11c]
mov eax, dword [esp + 0x120]
mov dword [esi], edi
pop edi
pop esi
pop ebp
mov dword [eax], 0x1e
xor eax, eax
pop ebx
add esp, 0x108
ret
mov esi, dword [esp + 0x134]
lea ecx, [ecx + ecx*2]
mov eax, dword [ecx*4 + 0x509a10]
mov edx, dword [esi + 8]
mov esi, dword [ecx*4 + 0x509a18]
movups xmm0, xmmword [eax + edx]
movups xmmword [esp + 0xec], xmm0
movups xmm0, xmmword [eax + edx + 0x10]
mov eax, dword [ecx*4 + 0x509a14]
movups xmmword [esp + 0xfc], xmm0
test eax, eax
js 0x404884
add edx, eax
xor ecx, ecx
test esi, esi
js 0x404872
nop dword [eax]
mov al, byte [edx + ecx]
or byte [esp + ecx + 0xec], al
inc ecx
cmp ecx, 0x20
jl 0x404860
jmp 0x404884
mov al, byte [edx + ecx]
not al
and byte [esp + ecx + 0xec], al
inc ecx
cmp ecx, 0x20
jl 0x404872
mov eax, esi
neg eax
test esi, esi
cmovns eax, esi
cmp eax, 1
jne 0x40489c
and byte [esp + 0xed], 0xc3
jmp 0x4048a9
cmp eax, 2
jne 0x4048a9
and byte [esp + 0xf7], 0x7f
xor ecx, ecx
test ebx, ebx
je 0x4048d0
nop
mov al, byte [esp + ecx + 0xec]
not al
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x4048b0
jmp 0x4048e1
mov al, byte [esp + ecx + 0xec]
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x4048d0
mov edi, dword [esp + 0x68]
mov ebx, 1
mov edx, dword [esp + 0x1c]
mov ebp, 2
add edi, 2
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], ebp
jmp 0x405423
cmp ecx, 0x5c
jne 0x404d01
mov edi, dword [esp + 0x134]
lea ecx, [esp + 0x10]
mov edx, dword [esp + 0x120]
push 1
push dword [esp + 0x4c]
push dword [edi + 0x38]
call fcn.00401800
mov ecx, eax
add esp, 0xc
mov eax, dword [esp + 0x120]
mov dword [esp + 0x28], ecx
cmp dword [eax], 0
jne 0x408284
cmp ecx, 0xfffffffb
jne 0x40495c
mov ecx, 8
mov dword [esp + 0x28], ecx
mov edi, dword [esp + 0x10]
jmp 0x404d01
cmp ecx, 0xfffffff4
je 0x40827e
cmp ecx, 0xffffffe6
jne 0x404991
mov edi, dword [esp + 0x10]
cmp word [edi + 2], 0x5c
jne 0x404984
cmp word [edi + 4], 0x45
jne 0x404984
add edi, 4
jmp 0x40541b
mov dword [esp + 0x60], 1
jmp 0x40541b
cmp ecx, 0xffffffe7
je 0x405417
test ecx, ecx
jns 0x404953
add dword [esp + 0x30], 2
mov eax, 0xfffffffa
mov edx, dword [edi + 8]
inc ebx
sub eax, ecx
mov dword [esp + 0x24], ebx
cmp eax, 0x1c
ja case.0x4049c2.6
movzx eax, byte [eax + 0x408890]
jmp dword [eax*4 + 0x40885c]
mov eax, dword [esp + 0x10]
mov ebx, esi
mov dword [esp + 0x34], eax
lea eax, [ecx*4 + 0x74]
mov ecx, 0x508c50
mov dword [esp + 0x24], ebx
sub ecx, eax
mov edi, dword [ecx]
sub edi, 2
jmp 0x40541b
xor ecx, ecx
mov al, byte [edx + ecx + 0x40]
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x4049f1
jmp 0x405417
mov dword [esp + 0x40], 1
xor ecx, ecx
nop
mov al, byte [edx + ecx + 0x40]
not al
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x404a10
jmp 0x405417
xor ecx, ecx
nop word [eax + eax]
mov al, byte [edx + ecx + 0xa0]
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x404a30
jmp 0x405417
mov dword [esp + 0x40], 1
xor ecx, ecx
mov al, byte [edx + ecx + 0xa0]
not al
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x404a50
jmp 0x405417
movzx eax, byte [edx]
mov ecx, 2
or byte [esp + 0x78], al
movzx eax, byte [edx + 1]
and al, 0xf7
or byte [esp + 0x79], al
nop
mov al, byte [edx + ecx]
or byte [esp + ecx + 0x78], al
inc ecx
cmp ecx, 0x20
jl 0x404a80
jmp 0x405417
lea eax, [esp + 0x78]
mov dword [esp + 0x40], 1
xor esi, esi
sub edx, eax
lea ecx, [esp + 0x78]
add ecx, esi
inc esi
mov al, byte [ecx + edx]
not al
or byte [ecx], al
cmp esi, 0x20
jl 0x404aa2
or byte [esp + 0x79], 8
jmp 0x405417
mov edx, dword [esp + 0x1c]
mov eax, 0x3000
or byte [esp + 0x79], 2
mov esi, 1
or byte [esp + 0x7c], 1
or byte [esp + 0x8c], 1
mov ebp, dword [esp + 0x30]
mov dword [edx], 0x16800001
mov dword [edx + 4], 0x180e0001
mov dword [edx + 8], 0x20000002
mov dword [edx + 0xc], 0x1200a
mov dword [edx + 0x10], 0x1202f
mov dword [edx + 0x14], 0x1205f
mov word [edx + 0x18], ax
add edx, 0x1a
mov edi, dword [esp + 0x10]
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], edx
jmp 0x405427
xor edx, edx
mov eax, edx
mov ecx, 0xff
sub eax, 1
je 0x404b43
sub eax, 3
je 0x404b3c
sub eax, 0x10
jne 0x404b48
mov ecx, 0xfe
jmp 0x404b48
mov ecx, 0xfd
or byte [esp + edx + 0x78], cl
inc edx
cmp edx, 0x20
jl 0x404b26
mov edx, dword [esp + 0x1c]
mov esi, 1
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x20], esi
mov dword [edx], 0x1000002
mov dword [edx + 4], 0x2167f
mov dword [edx + 8], 0x180d1681
mov dword [edx + 0xc], 0x180f0002
mov dword [edx + 0x10], 0x21fff
mov dword [edx + 0x14], 0x202e200b
mov dword [edx + 0x18], 0x20300002
mov dword [edx + 0x1c], 0x2205e
mov dword [edx + 0x20], 0x2fff2060
mov dword [edx + 0x24], 0x30010002
mov dword [edx + 0x28], 0xdfffdbff
add edx, 0x2c
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
jmp 0x405427
mov edx, dword [esp + 0x1c]
mov eax, 0x2029
or byte [esp + 0x79], 0x3c
mov esi, 1
or byte [esp + 0x88], 0x20
mov ebp, dword [esp + 0x30]
mov dword [edx], 0x20280002
mov word [edx + 4], ax
add edx, 6
mov edi, dword [esp + 0x10]
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], edx
jmp 0x405427
xor ecx, ecx
nop
mov eax, ecx
mov edx, 0xff
sub eax, 1
je 0x404c18
sub eax, 0xf
jne 0x404c1d
mov edx, 0xdf
jmp 0x404c1d
mov edx, 0xc3
or byte [esp + ecx + 0x78], dl
inc ecx
cmp ecx, 0x20
jl 0x404c00
mov edx, dword [esp + 0x1c]
mov eax, 0xdfff
mov ebp, dword [esp + 0x30]
mov esi, 1
mov dword [esp + 0x20], esi
mov dword [edx], 0x1000002
mov dword [edx + 4], 0x22027
mov dword [edx + 8], 0xdbff202a
mov word [edx + 0xc], ax
add edx, 0xe
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
jmp 0x405427
push dword [esp + 0x120]
lea eax, [esp + 0xd4]
push eax
lea edx, [esp + 0xd4]
lea ecx, [esp + 0x18]
call fcn.00401ee0
add esp, 8
test eax, eax
js 0x408284
mov edx, dword [esp + 0x1c]
xor ecx, ecx
cmp dword [esp + 0x28], 0xfffffff0
mov ebx, esi
mov ebp, dword [esp + 0x30]
mov esi, 1
sete cl
mov dword [esp + 0x20], 1
sub ecx, dword [esp + 0xcc]
neg ecx
mov dword [esp + 0x24], ebx
sbb ecx, ecx
add ecx, 4
mov word [edx], cx
mov word [edx + 2], ax
mov ax, word [esp + 0xd0]
mov word [edx + 4], ax
add edx, 6
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
jmp 0x405427
test byte [esp + 0x48], 0x40
mov edi, dword [esp + 0x10]
jne 0x40825b
movzx ecx, word [edi]
mov dword [esp + 0x28], ecx
jmp 0x404d01
mov ecx, dword [esp + 0x28]
cmp word [edi + 2], 0x5c
jne 0x404d25
cmp word [edi + 4], 0x45
jne 0x404d25
add edi, 4
mov dword [esp + 0x60], 0
mov dword [esp + 0x10], edi
cmp word [edi + 2], 0x5c
je 0x404d08
mov esi, edi
cmp ecx, 0xd
je 0x404d31
cmp ecx, 0xa
jne 0x404d41
mov ebx, dword [esp + 0x134]
or dword [ebx + 0x50], 0x800
jmp 0x404d48
mov ebx, dword [esp + 0x134]
mov edx, dword [esp + 0x60]
test edx, edx
jne 0x4051fb
cmp word [edi + 2], 0x2d
jne 0x4051fb
lea edi, [esi + 4]
mov dword [esp + 0x10], edi
mov ecx, edi
cmp word [edi], 0x5c
mov dword [esp + 0x2c], edi
jne 0x404dd1
cmp word [edi + 2], 0x45
jne 0x404d88
add edi, 4
mov dword [esp + 0x10], edi
mov ecx, edi
cmp word [edi], 0x5c
je 0x404d72
cmp word [edi], 0x5c
mov dword [esp + 0x2c], edi
jne 0x404dd1
cmp word [edi + 2], 0x51
jne 0x404dd1
lea edi, [ecx + 4]
mov dword [esp + 0x10], edi
cmp word [edi], 0x5c
mov dword [esp + 0x2c], edi
jne 0x404dc6
cmp word [edi + 2], 0x45
jne 0x404dc6
add edi, 4
mov dword [esp + 0x10], edi
mov ecx, edi
mov dword [esp + 0x2c], edi
cmp word [edi], 0x5c
je 0x404d92
jmp 0x404dcf
mov edx, 1
mov dword [esp + 0x60], edx
mov ecx, edi
movzx eax, word [edi]
test ax, ax
je 0x4051f1
test edx, edx
jne 0x404dea
cmp eax, 0x5d
je 0x4051f1
mov edx, eax
and eax, 0xfc00
mov dword [esp + 0x58], edx
cmp eax, 0xd800
jne 0x404e25
movzx eax, word [edi + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea edi, [ecx + 2]
add edx, 0x10000
mov dword [esp + 0x2c], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x10], edi
cmp dword [esp + 0x60], 0
jne 0x404e7c
cmp edx, 0x5c
jne 0x404e7c
mov edi, dword [esp + 0x120]
lea ecx, [esp + 0x10]
push 1
push dword [esp + 0x4c]
mov edx, edi
push dword [ebx + 0x38]
call fcn.00401800
add esp, 0xc
mov edx, eax
cmp dword [edi], 0
mov dword [esp + 0x58], edx
jne 0x408284
test edx, edx
jns 0x404e74
cmp edx, 0xfffffffb
jne 0x4051f1
mov edx, 8
mov dword [esp + 0x58], edx
mov edi, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x28]
cmp edx, ecx
jl 0x40829e
je 0x4051fb
mov ebp, dword [esp + 0x58]
cmp ebp, 0xd
je 0x404e9c
cmp ebp, 0xa
jne 0x404ea3
or dword [ebx + 0x50], 0x800
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], 2
cmp ebp, 0xff
jg 0x404f43
mov esi, eax
and esi, 1
je 0x404ecb
cmp ebp, 0x7f
jg 0x404f43
cmp dword [esp + 0x138], 0
mov ebx, 1
mov dword [esp + 0x24], ebx
jne 0x40541b
cmp ecx, ebp
jg 0x40541b
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x134]
mov edx, edi
test edx, edx
jns 0x404efe
add edx, 7
sar edx, 3
movzx ecx, byte [esp + edx + 0x78]
mov eax, edi
and eax, 7
bts ecx, eax
mov byte [esp + edx + 0x78], cl
test esi, esi
je 0x404f31
mov eax, dword [ebx + 4]
movzx edx, byte [eax + edi]
mov ecx, edx
and edx, 7
loop 0x404f29
shr ecx, 3
movzx eax, byte [esp + ecx + 0x78]
bts eax, edx
mov byte [esp + ecx + 0x78], al
inc edi
cmp edi, ebp
jle 0x404ef5
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
jmp 0x40541b
mov esi, 1
mov dword [esp + 0x20], esi
test al, 1
je 0x404fa0
mov ebx, ebp
mov edi, ecx
mov dword [esp + 0x2c], ebx
mov edx, edi
cmp edi, ebx
ja 0x404f9c
nop
mov eax, edx
lea edi, [edx + 1]
shr eax, 7
movzx ecx, byte [eax + 0x5172a0]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x50a8c0]
mov esi, dword [eax*8 + 0x5161c4]
add esi, edx
cmp esi, edx
jne 0x405005
mov edx, edi
cmp edx, ebx
jbe 0x404f60
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, 2
mov word [edx], ax
add edx, eax
mov eax, ecx
and eax, 0xf800
cmp eax, 0xd800
je 0x405172
cmp ecx, 0x110000
jae 0x405172
cmp ecx, 0xffff
jbe 0x405177
add ecx, 0xffff0000
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or eax, 0xd800
or ecx, 0xdc00
mov word [edx], ax
mov eax, 4
mov word [edx + 2], cx
jmp 0x40517f
lea edx, [esi + 1]
cmp edi, ebx
ja 0x405041
nop dword [eax]
mov eax, edi
shr eax, 7
movzx ecx, byte [eax + 0x5172a0]
mov eax, edi
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x50a8c0]
mov eax, dword [eax*8 + 0x5161c4]
add eax, edi
cmp eax, edx
jne 0x405041
inc edi
inc edx
cmp edi, ebx
jbe 0x405010
mov ecx, dword [esp + 0x28]
dec edx
cmp esi, ecx
jb 0x405054
cmp edx, ebp
jbe 0x404f58
jmp 0x40506a
lea eax, [ecx - 1]
cmp edx, eax
jb 0x405066
mov ecx, esi
mov dword [esp + 0x28], ecx
jmp 0x404f58
cmp edx, ebp
jbe 0x405078
lea eax, [ebp + 1]
cmp esi, eax
ja 0x405078
mov ebp, edx
jmp 0x404f58
mov ecx, dword [esp + 0x1c]
cmp esi, edx
jne 0x405090
mov esi, 1
mov word [ecx], si
lea esi, [ecx + 2]
jmp 0x405101
mov ebx, 2
mov eax, esi
mov word [ecx], bx
and eax, 0xf800
add ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
cmp eax, 0xd800
je 0x4050ee
cmp esi, 0x110000
jae 0x4050ee
cmp esi, 0xffff
jbe 0x4050f3
lea ecx, [esi - 0x10000]
mov esi, dword [esp + 0x1c]
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or eax, 0xd800
or ecx, 0xdc00
mov word [esi], ax
mov eax, 4
mov word [esi + 2], cx
jmp 0x4050ff
mov esi, 0xfffe
mov word [ecx], si
mov eax, 2
mov esi, dword [esp + 0x1c]
add esi, eax
mov eax, edx
and eax, 0xf800
cmp eax, 0xd800
je 0x405156
cmp edx, 0x110000
jae 0x405156
cmp edx, 0xffff
jbe 0x40515b
lea ecx, [edx - 0x10000]
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or ecx, 0xdc00
or eax, 0xd800
mov word [esi], ax
mov eax, 4
mov word [esi + 2], cx
add esi, eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], esi
jmp 0x404f58
mov edx, 0xfffe
mov ecx, dword [esp + 0x28]
mov eax, 2
mov word [esi], dx
add esi, eax
mov dword [esp + 0x1c], esi
jmp 0x404f58
mov ecx, 0xfffe
mov word [edx], cx
mov eax, 2
add edx, eax
mov eax, ebp
and eax, 0xf800
cmp eax, 0xd800
je 0x4051c9
cmp ebp, 0x110000
jae 0x4051c9
cmp ebp, 0xffff
jbe 0x4051ce
lea ecx, [ebp - 0x10000]
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or eax, 0xd800
or ecx, 0xdc00
mov word [edx], ax
mov eax, 4
mov word [edx + 2], cx
jmp 0x4051d6
mov ebp, 0xfffe
mov word [edx], bp
mov eax, 2
mov ebx, dword [esp + 0x50]
add edx, eax
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ebx
jmp 0x405427
invalid
mov ecx, dword [esp + 0x28]
mov edi, esi
mov dword [esp + 0x10], edi
cmp ebp, 2
lea ebx, [ebp + 1]
cmovge ebx, ebp
cmp ebx, 1
jne 0x405228
cmp word [edi + 2], 0x5d
jne 0x405228
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x405478
cmp ecx, 0x10000
jl 0x405478
cmp ecx, 0xff
jg 0x4052c1
mov esi, dword [esp + 0x48]
and esi, 1
je 0x405246
cmp ecx, 0x7f
jg 0x4052c1
mov dword [esp + 0x24], 1
mov edx, ecx
test edx, edx
jns 0x405257
add edx, 7
sar edx, 3
mov ebp, dword [esp + 0x28]
mov eax, ebp
movzx ecx, byte [esp + edx + 0x78]
and eax, 7
bts ecx, eax
mov dword [esp + 0x30], ebx
test esi, esi
mov byte [esp + edx + 0x78], cl
mov esi, dword [esp + 0x20]
je 0x4052b0
mov eax, dword [esp + 0x134]
mov eax, dword [eax + 4]
movzx edx, byte [eax + ebp]
mov ebp, ebx
mov ebx, dword [esp + 0x24]
mov ecx, edx
shr ecx, 3
and edx, 7
mov dword [esp + 0x30], ebp
movzx eax, byte [esp + ecx + 0x78]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x30]
jmp 0x405427
mov edi, dword [esp + 0x1c]
mov eax, 1
mov edx, ecx
mov dword [esp + 0x20], 1
mov word [edi], ax
mov eax, edx
and eax, 0xf800
add edi, 2
cmp eax, 0xd800
je 0x405322
cmp edx, 0x110000
jae 0x405322
cmp edx, 0xffff
jbe 0x405327
lea ecx, [edx - 0x10000]
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or eax, 0xd800
or ecx, 0xdc00
mov word [edi], ax
mov eax, 4
mov word [edi + 2], cx
jmp 0x40532f
mov ecx, 0xfffe
mov word [edi], cx
mov eax, 2
mov ebp, dword [esp + 0x50]
add edi, eax
test byte [esp + 0x48], 1
mov esi, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], ebx
je 0x405413
mov eax, edx
test eax, eax
jns 0x405357
add eax, 0x7f
sar eax, 7
movzx ecx, byte [eax + 0x5172a0]
mov eax, edx
shl ecx, 7
and eax, 0x8000007f
jns 0x405372
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], ebx
mov dword [esp + 0x1c], esi
movzx eax, word [ecx*2 + 0x50a8c0]
mov ecx, dword [eax*8 + 0x5161c4]
add ecx, edx
cmp ecx, edx
je 0x405413
mov eax, 1
lea edx, [esi + 2]
mov word [esi], ax
mov eax, ecx
and eax, 0xf800
cmp eax, 0xd800
je 0x4053ec
cmp ecx, 0x110000
jae 0x4053ec
cmp ecx, 0xffff
jbe 0x4053f1
add ecx, 0xffff0000
mov eax, ecx
and ecx, 0x3ff
shr eax, 0xa
or eax, 0xd800
or ecx, 0xdc00
mov word [edx], ax
mov eax, 4
mov word [edx + 2], cx
jmp 0x4053f9
mov ecx, 0xfffe
mov word [edx], cx
mov eax, 2
mov edi, dword [esp + 0x10]
add edx, eax
mov dword [esp + 0x24], ebp
mov ebp, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], ebp
jmp 0x405423
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
add edi, 2
mov dword [esp + 0x10], edi
movzx ecx, word [edi]
mov dword [esp + 0x28], ecx
test ecx, ecx
jne 0x40545f
test eax, eax
je 0x4055cd
lea edi, [eax + 2]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x10], edi
movzx ecx, word [edi]
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x4082c1
cmp ecx, 0x5d
jne 0x404620
cmp dword [esp + 0x60], 0
jne 0x404620
jmp 0x4055d5
add edi, 2
mov dword [esp + 0x10], edi
test eax, eax
je 0x4054e8
mov ebp, dword [esp + 0x4c]
mov eax, 0xffffffff
mov edx, dword [esp + 0x14]
cmp ebp, 0xfffffffe
cmove ebp, eax
test byte [esp + 0x48], 1
mov eax, 0
mov dword [esp + 0x4c], ebp
setne al
mov dword [esp + 0x30], ebp
add eax, 0x1f
mov word [edx], ax
mov word [edx + 2], cx
add edx, 4
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x38]
add edi, 2
mov ecx, dword [esp + 0x134]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x34]
movsd xmm2, qword [esp + 0xe4]
mov dword [esp + 0x58], esi
jmp 0x403fbf
cmp ecx, 0xffff
jle 0x4055bb
mov eax, ecx
and eax, 0xf800
cmp eax, 0xd800
je 0x4055b6
cmp ecx, 0x110000
jae 0x4055b6
cmp ecx, 0xffff
jbe 0x4055bb
lea eax, [ecx - 0x10000]
mov ebx, eax
and eax, 0x3ff
shr ebx, 0xa
or ebx, 0xd800
or eax, 0xdc00
mov word [esp + 0xbc], bx
mov word [esp + 0xbe], ax
mov edx, 2
mov ecx, dword [esp + 0x14]
mov eax, 0
test byte [esp + 0x48], 1
mov ebp, ecx
mov dword [esp + 0x18], ebp
setne al
add eax, 0x1d
mov word [ecx], ax
mov eax, ecx
add eax, 2
mov dword [esp + 0x14], eax
test edx, edx
je 0x405593
mov ecx, edx
lea esi, [esp + 0xbc]
shr ecx, 1
mov edi, eax
rep movsd dword es:[edi], dword [esi]
adc ecx, ecx
lea eax, [eax + edx*2]
rep movsw word es:[edi], word [esi]
mov dword [esp + 0x14], eax
cmp bx, 0xd
je 0x4055a3
cmp bx, 0xa
jne 0x408108
mov ecx, dword [esp + 0x134]
or dword [ecx + 0x50], 0x800
jmp 0x40810f
mov ecx, 0xfffe
mov bx, cx
mov edx, 1
mov word [esp + 0xbc], bx
jmp 0x40554e
test ecx, ecx
je 0x4082c1
mov eax, dword [esp + 0x4c]
mov ecx, 0xffffffff
cmp eax, 0xfffffffe
cmove eax, ecx
test esi, esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x58], eax
je 0x4056ad
test esi, esi
je 0x405612
test dword [esp + 0x48], 0x20000000
je 0x4056ad
mov esi, dword [esp + 0x14]
xor eax, eax
mov word [edx], ax
mov eax, 0x6c
add edx, 2
mov dword [esp + 0x1c], edx
mov word [esi], ax
xor eax, eax
cmp dword [esp + 0x3c], eax
setne al
movzx eax, ax
mov word [esi + 4], ax
test ebx, ebx
jle 0x40567b
or eax, 2
mov word [esi + 4], ax
add esi, 6
mov eax, edx
sub eax, esi
and eax, 0xfffffffe
push eax
lea eax, [esi + 0x20]
push esi
push eax
call sub.VCRUNTIME140.dll_memmove
movups xmm0, xmmword [esp + 0x84]
mov edx, dword [esp + 0x28]
add esp, 0xc
add edx, 0x20
movups xmmword [esi], xmm0
movups xmm0, xmmword [esp + 0x88]
movups xmmword [esi + 0x10], xmm0
mov ebp, dword [esp + 0x18]
mov eax, edx
mov ecx, dword [esp + 0x134]
sub eax, ebp
mov ebx, dword [esp + 0x34]
movsd xmm2, qword [esp + 0xe4]
sar eax, 1
mov word [ebp + 2], ax
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], edx
add edi, 2
jmp 0x403fbf
mov ecx, dword [esp + 0x3c]
xor eax, eax
mov edx, dword [esp + 0x14]
cmp ecx, esi
setne al
add eax, 0x6a
cmp dword [esp + 0x138], 0
mov word [edx], ax
jne 0x4056f1
test ecx, ecx
je 0x4056dc
xor ecx, ecx
not byte [esp + ecx + 0x78]
inc ecx
cmp ecx, 0x20
jl 0x4056d2
movups xmm0, xmmword [esp + 0x78]
movups xmmword [edx + 2], xmm0
movups xmm0, xmmword [esp + 0x88]
movups xmmword [edx + 0x12], xmm0
add edx, 0x22
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], esi
mov ecx, dword [esp + 0x134]
add edi, 2
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x34]
movsd xmm2, qword [esp + 0xe4]
jmp 0x403fbf
test ebp, ebp
je case.0x404351.1
movzx eax, word [edi + 2]
add edi, 2
xor ecx, ecx
or edx, 0xffffffff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edx
cmp eax, 0x30
jb 0x40577e
mov edx, eax
cmp dx, 0x39
ja 0x405766
movzx eax, dx
lea ecx, [ecx + ecx*4]
add edi, 2
lea ecx, [ecx - 0x18]
lea ecx, [eax + ecx*2]
movzx eax, word [edi]
mov edx, eax
cmp eax, 0x30
jae 0x405747
mov dword [esp + 0x28], ecx
test ecx, ecx
js 0x408315
cmp ecx, 0xffff
jg 0x408315
cmp word [edi], 0x7d
jne 0x40578c
mov edx, ecx
mov dword [esp + 0x24], edx
jmp 0x4057e8
movzx eax, word [edi + 2]
add edi, 2
cmp eax, 0x7d
je 0x4057e8
xor ebx, ebx
mov dword [esp + 0x24], ebx
cmp eax, 0x30
jb 0x4057e0
mov edx, eax
cmp dx, 0x39
ja 0x4057c4
movzx eax, dx
lea ebx, [ebx + ebx*4]
add edi, 2
lea ebx, [ebx - 0x18]
lea ebx, [eax + ebx*2]
movzx eax, word [edi]
mov edx, eax
cmp eax, 0x30
jae 0x4057a5
mov dword [esp + 0x24], ebx
test ebx, ebx
js 0x408315
cmp ebx, 0xffff
jg 0x408315
mov ecx, dword [esp + 0x28]
cmp ebx, ecx
jb 0x408338
mov eax, dword [esp + 0x120]
mov dword [esp + 0x10], edi
cmp dword [eax], 0
jne 0x408790
mov ebp, dword [esp + 0x24]
jmp 0x405829
xor ecx, ecx
or ebp, 0xffffffff
jmp 0x40581a
mov ecx, 1
or ebp, 0xffffffff
jmp 0x40581a
xor ecx, ecx
mov ebp, 1
mov eax, dword [esp + 0x120]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebp
mov esi, dword [esp + 0x18]
test esi, esi
je 0x40837e
mov eax, dword [esp + 0x58]
test ecx, ecx
cmovne eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov ebx, eax
mov eax, dword [esp + 0x30]
cmovne eax, dword [esp + 0x4c]
xor edx, edx
cmp ecx, ebp
mov dword [esp + 0x4c], eax
mov eax, 0x20000000
mov dword [esp + 0x40], edx
cmove eax, edx
mov edx, esi
mov dword [esp + 0x44], edx
movzx ecx, word [edi + 2]
mov dword [esp + 0x6c], eax
cmp ecx, 0x2b
jne 0x40588f
add edi, 2
mov dword [esp + 0x20], 0
mov dword [esp + 0x40], 1
mov dword [esp + 0x10], edi
jmp 0x4058b3
cmp ecx, 0x3f
jne 0x4058a8
mov ecx, dword [esp + 0xb4]
add edi, 2
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edi
jmp 0x4058b3
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x20], eax
cmp word [esi], 0x6f
jne 0x405919
mov eax, dword [esi]
add dword [esp + 0x14], 8
cmp dword [esp + 0x138], 0
mov dword [esi + 4], eax
mov dword [esi], 0x4007b
mov dword [esi + 8], 0x40072
mov dword [esp + 0x5c], 6
jne 0x405911
mov edi, dword [esp + 0x134]
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0x24]
add eax, 2
cmp edx, eax
jb 0x405911
mov ecx, dword [esp + 0x18]
sub ecx, dword [edi + 0x14]
movzx esi, word [edx - 2]
add ecx, 2
sar ecx, 1
cmp esi, ecx
jne 0x405911
lea eax, [esi + 2]
mov word [edx - 2], ax
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
cmp ecx, 0x1d
je 0x406230
cmp ecx, 0x1e
je 0x406230
cmp ecx, 0x1f
je 0x4061ca
cmp ecx, 0x20
je 0x4061ca
cmp ecx, 0x17
jae 0x40599e
cmp dword [esp + 0x40], 0
mov esi, 0x34
mov ebp, ecx
jne 0x4062b6
mov edx, dword [esp + 0x24]
mov dword [esp + 0x38], ebx
test edx, edx
jns 0x4062b6
push dword [esp + 0x134]
mov ecx, dword [esp + 0x1c]
lea eax, [edi + 2]
push dword [esp + 0x4c]
lea edx, [esi - 0x33]
mov dword [esp + 0x40], ebx
push eax
call fcn.00403340
add esp, 0xc
test eax, eax
je 0x4062b2
mov dword [esp + 0x38], ebx
jmp 0x4062a2
cmp ecx, 0x6a
je 0x4060e2
cmp ecx, 0x6b
je 0x4060e2
cmp ecx, 0x6c
je 0x4060e2
cmp ecx, 0x6d
je 0x4060e2
cmp ecx, 0x6e
je 0x4060e2
lea eax, [ecx - 0x77]
cmp ax, 0xa
ja 0x4060c7
mov esi, dword [esp + 0x14]
xor eax, eax
sub esi, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov eax, 0x81
sar esi, 1
mov dword [esp + 0x2c], esi
mov dword [esp + 0x3c], 0
cmp cx, ax
jne 0x405a1f
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov eax, 0x8b
cmp word [ecx + 4], ax
je 0x4065cc
mov eax, dword [esp + 0x28]
jmp 0x405a54
cmp ecx, 0x7b
jae 0x405a4c
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4065cc
test ebp, ebp
js 0x405a41
cmp ebp, 1
jle 0x405a50
mov ebp, 1
mov dword [esp + 0x24], ebp
jmp 0x405a50
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
test eax, eax
jne 0x405b6c
push dword [esp + 0x54]
mov eax, dword [esp + 0x18]
lea esi, [ecx + 2]
push dword [esp + 0x138]
xor edx, edx
push ecx
mov word [eax], dx
cmp ebp, 1
jg 0x405b08
mov edx, 1
call fcn.00402fa0
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
add eax, eax
push eax
push edi
push esi
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x2c]
add esp, 0x18
add edx, 2
mov dword [esp + 0x14], edx
test ebp, ebp
jne 0x405ae2
mov ecx, dword [esp + 0x134]
mov eax, 0x9b
movsd xmm2, qword [esp + 0xe4]
mov word [edi], ax
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
or dword [ecx + 0x54], eax
add edi, 2
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x18], ebp
jmp 0x403fbf
mov eax, dword [esp + 0x20]
add eax, 0x8c
mov dword [esp + 0x50], edi
mov word [edi], ax
dec ebp
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x18], esi
mov dword [esp + 0x38], ebx
jmp 0x405d04
mov edx, 3
call fcn.00402fa0
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
add eax, eax
push eax
push edi
lea eax, [edi + 6]
push eax
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [esp + 0x38]
mov ecx, esi
add dword [esp + 0x2c], 6
add eax, 0x8c
mov word [edi], ax
mov edx, 0x7d
mov eax, ecx
mov dword [esp + 0x50], ebx
mov word [ecx], dx
add eax, 4
add ecx, 2
mov dword [esp + 0x30], eax
xor edx, edx
mov dword [esp + 0x54], ecx
add esp, 0x18
dec ebp
mov word [ecx], dx
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
jmp 0x405d04
mov dword [esp + 0x38], ebx
cmp eax, 1
jbe 0x405cfe
cmp dword [esp + 0x138], 0
je 0x405bde
lea ecx, [eax - 1]
mov eax, dword [esp + 0x5c]
movd xmm1, ecx
mov esi, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
imul esi, eax
mulsd xmm1, xmm0
comisd xmm1, xmm2
ja 0x408760
mov eax, dword [esp + 0x138]
mov ecx, dword [eax]
mov eax, 0x7fffffeb
sub eax, ecx
cmp eax, esi
jl 0x408760
lea eax, [esi + ecx]
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x138]
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
jmp 0x405cfe
cmp dword [esp + 0xa4], 0
mov dword [esp + 0x38], ebx
je 0x405bf9
test ebx, ebx
mov eax, ebx
cmovs eax, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x134]
lea ebp, [esi + esi]
mov dword [esp + 0x9c], ebp
mov ebx, 1
nop
mov esi, dword [edx + 0x24]
push ebp
push ecx
push dword [esp + 0x1c]
call sub.VCRUNTIME140.dll_memcpy
mov edx, dword [esp + 0x140]
mov ecx, esi
sub ecx, dword [esp + 0x60]
add esp, 0xc
sar ecx, 1
mov eax, dword [edx + 0x34]
mov edi, dword [edx + 0x10]
sub eax, ecx
add eax, 0xffffff9c
lea eax, [edi + eax*2]
cmp dword [edx + 0x24], eax
jbe 0x405c9f
mov ecx, edx
call fcn.004016d0
mov ecx, dword [esp + 0x120]
mov dword [ecx], eax
test eax, eax
jne 0x408284
mov eax, dword [esp + 0x134]
sub esi, edi
mov ecx, dword [esp + 0x54]
sub ecx, edi
sar esi, 1
sar ecx, 1
mov edx, dword [eax + 0x10]
mov edi, edx
mov eax, dword [eax + 0x34]
lea ecx, [edx + ecx*2]
lea esi, [edx + esi*2]
mov dword [esp + 0x54], ecx
mov ecx, esi
add edx, 0xffffff38
sub ecx, dword [esp + 0x54]
sar ecx, 1
sub eax, ecx
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x134]
cmp dword [edx + 0x24], eax
ja 0x405c43
mov edi, dword [esp + 0x54]
cmp edi, esi
jae 0x405cce
mov ebp, dword [esp + 0x2c]
nop dword [eax + eax]
mov cx, word [edi]
add edi, 2
mov eax, dword [edx + 0x24]
add cx, bp
mov word [eax], cx
add dword [edx + 0x24], 2
cmp edi, esi
jb 0x405cb0
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x2c]
inc ebx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x54], esi
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
cmp ebx, eax
jl 0x405c10
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x24]
test ebp, ebp
jle 0x405d06
sub ebp, eax
test ebp, ebp
js 0x405f54
mov ebx, dword [esp + 0x138]
test ebx, ebx
je 0x405dbd
test ebp, ebp
jle 0x405dbd
mov eax, dword [esp + 0x5c]
add eax, 5
movd xmm0, ebp
cvtdq2pd xmm0, xmm0
mov ecx, eax
movd xmm1, eax
cvtdq2pd xmm1, xmm1
imul ecx, ebp
mulsd xmm1, xmm0
sub ecx, 4
comisd xmm1, xmmword [esp + 0xe4]
ja 0x408760
mov esi, dword [ebx]
mov eax, 0x7fffffeb
sub eax, esi
cmp eax, ecx
jl 0x408760
lea eax, [ecx + esi]
mov dword [ebx], eax
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x406531
mov ebx, 0x72
mov edx, ebp
mov esi, ebp
sub edx, ecx
sar edx, 1
inc edx
lea eax, [edx + edx]
sub esi, eax
movzx eax, word [esi + 2]
mov word [ebp], bx
test eax, eax
je 0x405f3d
add eax, eax
sub ecx, eax
movzx eax, dx
mov word [ebp + 2], ax
add ebp, 4
mov dword [esp + 0x14], ebp
mov word [esi + 2], ax
test ecx, ecx
jne 0x405d80
jmp 0x406529
lea eax, [ebp - 1]
mov dword [esp + 0x24], eax
test eax, eax
js 0x405d6b
mov esi, dword [esp + 0x134]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
add ecx, 0x8c
mov ebp, dword [esp + 0x14]
add edx, edx
mov edi, dword [esi + 0x24]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x50], edx
mov word [ebp], cx
mov ebx, edi
add ebp, 2
mov dword [esp + 0x14], ebp
test eax, eax
je 0x405e2f
mov ecx, dword [esp + 0x3c]
mov eax, 0x7d
mov word [ebp], ax
add ebp, 2
test ecx, ecx
jne 0x405e1a
xor eax, eax
jmp 0x405e20
mov eax, ebp
sub eax, ecx
sar eax, 1
mov dword [esp + 0x3c], ebp
mov word [ebp], ax
add ebp, 2
mov dword [esp + 0x14], ebp
push edx
push dword [esp + 0x1c]
push ebp
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x140]
add esp, 0xc
sub edi, dword [esp + 0x54]
mov ebp, dword [esi + 0x10]
mov esi, dword [esi + 0x24]
mov eax, dword [eax + 0x34]
sar edi, 1
sub eax, edi
add eax, 0xffffff9c
lea eax, [eax*2]
add eax, ebp
cmp esi, eax
jbe 0x405ebb
mov edi, dword [esp + 0x134]
nop dword [eax]
mov ecx, edi
call fcn.004016d0
mov ecx, dword [esp + 0x120]
mov dword [ecx], eax
test eax, eax
jne 0x408284
mov edx, dword [edi + 0x10]
sub ebx, ebp
mov eax, dword [esp + 0x54]
mov esi, dword [edi + 0x24]
sub eax, ebp
sar eax, 1
mov ebp, edx
sar ebx, 1
lea eax, [edx + eax*2]
lea ebx, [edx + ebx*2]
mov dword [esp + 0x54], eax
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi + 0x34]
sar ecx, 1
sub eax, ecx
add eax, 0xffffff9c
lea eax, [edx + eax*2]
cmp esi, eax
ja 0x405e70
mov ebp, dword [esp + 0x54]
mov edi, esi
mov esi, dword [esp + 0x134]
cmp ebp, ebx
jae 0x405f00
xor eax, eax
cmp dword [esp + 0x24], eax
setne al
lea eax, [eax*2 + 1]
movzx edx, ax
nop
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x24]
add ecx, edx
add cx, word [ebp]
add ebp, 2
mov word [eax], cx
mov edi, dword [esi + 0x24]
add edi, 2
mov dword [esi + 0x24], edi
cmp ebp, ebx
jb 0x405ee0
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x54], ebx
lea ebp, [ebp + eax*2]
mov eax, dword [esp + 0x24]
sub eax, 1
mov dword [esp + 0x14], ebp
mov dword [esp + 0x24], eax
jns 0x405df1
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
jmp 0x405d6f
movzx eax, dx
mov word [ebp + 2], ax
mov word [esi + 2], ax
lea eax, [ebp + 4]
mov dword [esp + 0x14], eax
jmp 0x406529
mov edx, dword [esp + 0x14]
movzx eax, word [edx - 2]
lea edi, [edx - 4]
add eax, eax
mov ebx, edi
sub ebx, eax
movzx eax, word [ebx]
cmp eax, 0x7b
je 0x405f74
mov ecx, eax
cmp eax, 0x7c
jne 0x405f9c
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x405f86
mov eax, 0x7d
mov word [ebx], ax
jmp 0x405fa6
mov ecx, eax
cmp eax, 0x7b
jne 0x405fa0
mov eax, dword [esp + 0x20]
add eax, 0x73
mov word [edi], ax
jmp 0x406529
mov ebp, dword [esp + 0x40]
cmp cx, 0x7c
je 0x405f8d
cmp dword [esp + 0x138], 0
jne 0x405fe2
mov esi, ebx
push dword [esp + 0x134]
mov edx, edi
push ecx
mov ecx, esi
call fcn.00402b20
add esp, 8
test eax, eax
jne 0x405fda
movzx eax, word [esi + 2]
cmp word [esi + eax*2], 0x71
lea esi, [esi + eax*2]
je 0x405fb2
jmp 0x405fde
add word [ebx], 5
mov edx, dword [esp + 0x14]
test ebp, ebp
je 0x406090
movzx eax, word [ebx]
mov ecx, 0x81
cmp ax, cx
je 0x40600f
mov ecx, 0x86
cmp ax, cx
je 0x40600f
inc eax
mov word [ebx], ax
mov eax, 0x75
mov word [edi], ax
jmp 0x406068
push dword [esp + 0x54]
xor eax, eax
mov esi, edx
push dword [esp + 0x138]
mov word [edx], ax
sub esi, ebx
push ecx
lea edx, [eax + 2]
sar esi, 1
mov ecx, ebx
call fcn.00402fa0
lea eax, [esi + esi]
push eax
lea eax, [ebx + 4]
push ebx
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x2c]
mov eax, 0x7e
mov word [ebx], ax
add esp, 0x18
mov eax, 0x75
mov word [edx + 4], ax
lea eax, [esi + 2]
mov word [edx + 6], ax
add edx, 8
mov dword [esp + 0x14], edx
mov word [ebx + 2], ax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x406078
mov ecx, 0x8e
mov word [eax], cx
cmp dword [esp + 0x28], 2
mov edi, dword [esp + 0x10]
jb 0x4065d0
mov edx, dword [esp + 0x44]
jmp 0x40653c
mov eax, dword [esp + 0x20]
xor ebp, ebp
mov ecx, dword [esp + 0x134]
add eax, 0x73
mov ebx, dword [esp + 0x34]
movsd xmm2, qword [esp + 0xe4]
mov word [edi], ax
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
or dword [ecx + 0x54], eax
add edi, 2
mov dword [esp + 0x18], ebp
jmp 0x403fbf
mov eax, 0x97
cmp cx, ax
jne 0x40835b
mov esi, dword [esp + 0x38]
mov dword [esp + 0x38], esi
jmp 0x4065cc
test ebp, ebp
jne 0x40611b
mov ecx, dword [esp + 0x134]
mov edx, eax
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
or dword [ecx + 0x54], eax
add edi, 2
movsd xmm2, qword [esp + 0xe4]
mov dword [esp + 0x14], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x18], ebp
jmp 0x403fbf
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x40616b
cmp ebp, 0xffffffff
jne 0x406147
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
add eax, 0x62
mov dword [esp + 0x38], esi
mov word [ebp], ax
add ebp, 2
jmp 0x406525
cmp ebp, 1
jne 0x406194
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
add eax, 0x66
mov dword [esp + 0x38], esi
mov word [ebp], ax
add ebp, 2
jmp 0x406525
cmp ecx, 1
jne 0x406194
cmp ebp, 0xffffffff
jne 0x406194
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
add eax, 0x64
mov dword [esp + 0x38], esi
mov word [ebp], ax
add ebp, 2
jmp 0x406525
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
add eax, 0x68
mov dword [esp + 0x38], esi
mov word [edx], ax
xor eax, eax
mov word [edx + 2], cx
add edx, 4
cmp ebp, 0xffffffff
mov dword [esp + 0x14], edx
cmove ebp, eax
mov word [edx], bp
mov ebp, edx
add ebp, 2
jmp 0x406525
movzx ebp, word [eax + 2]
cmp ecx, 0x1f
mov esi, 0x27
mov ecx, 0x1a
cmove esi, ecx
cmp dword [esp + 0x40], 0
jne 0x406223
mov edx, dword [esp + 0x24]
test edx, edx
jns 0x406223
push dword [esp + 0x134]
lea eax, [edi + 2]
push dword [esp + 0x4c]
lea edx, [ecx - 0x19]
mov ecx, dword [esp + 0x20]
push eax
call fcn.00403340
mov edi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x406223
mov dword [esp + 0x20], 0
mov dword [esp + 0x40], 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x38], ecx
jmp 0x4062b6
mov edx, dword [esp + 0x14]
xor eax, eax
cmp ecx, 0x1d
mov esi, 0xd
cmove esi, eax
movzx ecx, word [edx - 2]
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x4062d7
mov eax, dword [edx - 4]
mov ebp, 0x10000002
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10c], eax
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x134]
cmp dword [esp + 0x40], 0
jne 0x4062b6
mov edx, dword [esp + 0x24]
test edx, edx
jns 0x4062b6
mov ecx, dword [esp + 0x18]
mov edx, 1
push eax
push dword [esp + 0x4c]
lea eax, [edi + 2]
push eax
call fcn.00403340
add esp, 0xc
test eax, eax
je 0x4062b2
mov dword [esp + 0x40], 1
mov dword [esp + 0x20], 0
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
movzx eax, word [edx]
cmp eax, 0x10
je 0x406301
cmp eax, 0xf
je 0x406301
mov dword [esp + 0x1c], 0xffffffff
lea ecx, [edx + 2]
or ebx, 0xffffffff
jmp 0x40630f
cmp dword [esp + 0x28], 1
mov ebp, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x38], ecx
jbe 0x40626e
mov eax, dword [esp + 0x134]
mov ecx, dword [eax + 0x54]
or ecx, ebp
or ecx, dword [esp + 0x74]
mov dword [esp + 0x38], ecx
jmp 0x406275
movzx eax, word [edx + 4]
lea ecx, [edx + 2]
movzx ebx, word [ecx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4065cc
add dword [esp + 0x20], esi
cmp dword [esp + 0x28], 0
jne 0x4063a8
mov eax, dword [esp + 0x20]
mov edi, ecx
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
movzx eax, ax
cmp edx, 0xffffffff
jne 0x406390
add eax, 0x21
mov word [esi], ax
mov dword [esp + 0x14], edi
mov esi, dword [esp + 0x1c]
test ebp, 0x10000000
je 0x406508
and ebp, 7
lea eax, [ebp*2]
push eax
lea eax, [esp + 0x110]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
lea edi, [edi + ebp*2]
add esp, 0xc
mov dword [esp + 0x14], edi
mov ebp, edi
jmp 0x406516
cmp edx, 1
jne 0x40639a
add eax, 0x25
jmp 0x40634f
add eax, 0x27
mov word [esi], ax
mov word [edi], dx
add edi, 2
jmp 0x406352
mov ecx, dword [esp + 0x28]
cmp ecx, 1
jne 0x4063f3
cmp eax, 0xffffffff
jne 0x4063c9
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
add eax, 0x23
mov word [ecx], ax
lea edi, [ecx + 2]
jmp 0x406352
mov dword [esp + 0x14], edx
cmp eax, 1
je 0x4065cc
mov eax, dword [esp + 0x20]
lea ecx, [edx + 2]
add eax, 0x27
lea edi, [ecx + 2]
mov word [edx], ax
mov eax, dword [esp + 0x24]
dec eax
mov word [ecx], ax
jmp 0x406352
mov edx, dword [esp + 0x18]
lea eax, [esi + 0x29]
lea edi, [edx + 2]
mov word [edx], ax
mov edx, dword [esp + 0x24]
mov word [edi], cx
add edi, 2
mov dword [esp + 0x14], edi
test edx, edx
jns 0x406483
test ebp, 0x10000000
je 0x406455
mov esi, ebp
and esi, 7
lea eax, [esi + esi]
push eax
lea eax, [esp + 0x110]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea edi, [edi + esi*2]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
add eax, 0x21
mov word [edi], ax
add edi, 2
mov dword [esp + 0x14], edi
jmp 0x40635a
mov word [edi], bp
add edi, 2
test ebx, ebx
js 0x40643b
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov word [edi], bx
add eax, 0x21
mov word [edi + 2], si
add edi, 4
mov word [edi], ax
add edi, 2
mov dword [esp + 0x14], edi
jmp 0x40635a
cmp edx, ecx
je 0x406356
test ebp, 0x10000000
je 0x4064ba
mov esi, ebp
and esi, 7
lea eax, [esi + esi]
push eax
lea eax, [esp + 0x110]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
mov edx, dword [esp + 0x30]
lea edi, [edi + esi*2]
mov ecx, dword [esp + 0x34]
add esp, 0xc
jmp 0x4064c0
mov word [edi], bp
add edi, 2
mov esi, dword [esp + 0x1c]
test ebx, ebx
js 0x4064d2
mov word [edi], bx
mov word [edi + 2], si
add edi, 4
mov eax, dword [esp + 0x20]
sub edx, ecx
movzx eax, ax
cmp edx, 1
jne 0x4064f2
add eax, 0x25
mov word [edi], ax
add edi, 2
mov dword [esp + 0x14], edi
jmp 0x40635a
add eax, 0x27
mov word [edi], ax
mov word [edi + 2], dx
add edi, 4
mov dword [esp + 0x14], edi
jmp 0x40635a
mov word [edi], bp
mov ebp, dword [esp + 0x14]
add ebp, 2
mov dword [esp + 0x14], ebp
test ebx, ebx
js 0x406529
mov word [ebp], bx
mov word [ebp + 2], si
add ebp, 4
mov dword [esp + 0x14], ebp
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
cmp dword [esp + 0x40], 0
je 0x4065cc
movzx eax, word [edx]
cmp eax, 0x5d
jne 0x406560
movzx eax, word [edx + 4]
cmp eax, 0x10
je 0x406557
cmp eax, 0xf
mov eax, 6
jne 0x40655c
mov eax, 0xa
add edx, eax
jmp 0x406591
cmp eax, 0x29
je 0x40656a
cmp eax, 0x43
jne 0x406595
movzx eax, byte [eax + 0x50a010]
mov ecx, 0xfc00
lea edx, [edx + eax*2]
mov dword [esp + 0x44], edx
mov ax, word [edx - 2]
and ax, cx
mov ecx, 0xd800
cmp ax, cx
jne 0x406595
add edx, 2
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x14]
mov esi, ecx
sub esi, edx
sar esi, 1
test esi, esi
jle 0x4065cc
movzx eax, word [edx]
add eax, 0xffffffdf
cmp eax, 0x3a
ja case.0x4065b9.34
movzx eax, byte [eax + 0x408904]
jmp dword [eax*4 + 0x4088b0]
mov eax, 0x2a
mov word [edx], ax
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x134]
xor ebp, ebp
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x34]
movsd xmm2, qword [esp + 0xe4]
or dword [ecx + 0x54], eax
add edi, 2
mov dword [esp + 0x18], ebp
jmp 0x403fbf
mov eax, 0x2b
jmp 0x4065c5
mov eax, 0x2c
jmp 0x4065c5
mov eax, 0x2d
jmp 0x4065c5
mov eax, 0x37
jmp 0x4065c5
mov eax, 0x38
jmp 0x4065c5
mov eax, 0x39
jmp 0x4065c5
mov eax, 0x3a
jmp 0x4065c5
mov eax, 0x44
jmp 0x4065c5
mov eax, 0x45
jmp 0x4065c5
mov eax, 0x46
jmp 0x4065c5
mov eax, 0x47
jmp 0x4065c5
mov eax, 0x51
jmp 0x4065c5
mov eax, 0x52
jmp 0x4065c5
mov eax, 0x53
jmp 0x4065c5
mov eax, 0x54
invalid
push esp
invalid
invalid