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

Disassembly:
sub esp, 0xdc
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0xf0]
mov ecx, dword [eax]
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xf8]
mov eax, dword [eax]
mov ebx, dword [edx]
mov edx, ecx
shr edx, 9
and edx, 1
mov dword [esp + 0xc0], edx
xor edx, 1
mov dword [esp + 0xc8], edx
mov edx, 0xfffffffe
mov dword [esp + 0x60], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x34], edx
movsx edx, cl
mov ebp, ecx
shr ebp, 0xb
xor esi, esi
and ebp, 1
and edx, 1
shl edx, 8
mov edi, dword [esp + 0x10c]
mov dword [esp + 0x48], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0xb4], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0xa4], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x30], ebp
mov dword [esp + 0x70], edx
movzx edx, byte [eax]
mov dword [esp + 0x14], edx
mov edx, dword [edi + 0x10]
add edx, 0x1000
cmp dword [esp + 0x110], esi
je 0x46c59b
cmp ebx, edx
ja 0x46f5be
mov esi, dword [esp + 0x9c]
cmp ebx, esi
jae 0x46c516
mov ebx, esi
mov edx, dword [esp + 0x110]
mov edx, dword [edx]
mov ebp, ebx
sub ebp, esi
mov esi, 0x7fffffeb
sub esi, edx
cmp esi, ebp
jl 0x46f5e5
sub edx, dword [esp + 0x9c]
mov esi, dword [esp + 0x110]
add edx, ebx
mov dword [esi], edx
mov edx, dword [esp + 0x18]
test edx, edx
je 0x46c587
mov esi, dword [esp + 0xc4]
cmp edx, esi
jbe 0x46c58e
mov ecx, ebx
sub ecx, edx
push ecx
push edx
push esi
call fcn.00415f40
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x3c]
mov edx, esi
sub edx, dword [esp + 0x24]
add esp, 0xc
add ebx, edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x9c], ebx
jmp 0x46c5a4
mov ebx, dword [esp + 0xc4]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x9c], ebx
jmp 0x46c5a4
cmp dword [edi + 0x24], edx
ja 0x46f60c
cmp dword [esp + 0x58], 0
je 0x46c66a
cmp dword [esp + 0x14], 0
je 0x46c66a
cmp dword [esp + 0x14], 0x5c
jne 0x46c5eb
cmp byte [eax + 1], 0x45
jne 0x46c5eb
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
inc eax
mov dword [esp + 0x10], eax
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x58], 0
xor esi, esi
jmp 0x46c4e4
mov ebp, dword [esp + 0x5c]
test ebp, ebp
je 0x46c62c
cmp dword [esp + 0x110], 0
jne 0x46c624
movzx edx, byte [ebp + 2]
movzx esi, byte [ebp + 3]
shl edx, 8
or edx, esi
mov esi, eax
sub esi, edx
sub esi, dword [edi + 0x18]
mov edx, esi
sar edx, 8
mov dword [esp + 0x54], esi
mov byte [ebp + 4], dl
mov dl, byte [esp + 0x54]
mov byte [ebp + 5], dl
mov dword [esp + 0x5c], 0
test ecx, 0x4000
je case.0x46c7f9.1
mov byte [ebx], 0x53
mov byte [ebx + 1], 0xff
lea ebp, [ebx + 1]
inc ebp
mov edx, eax
sub edx, dword [edi + 0x18]
mov dword [esp + 0x5c], ebx
sar edx, 8
mov byte [ebp], dl
mov dl, al
sub dl, byte [edi + 0x18]
mov byte [ebp + 2], 0
mov byte [ebp + 1], dl
mov byte [ebp + 3], 0
lea ebx, [ebp + 4]
jmp case.0x46c7f9.1
cmp dword [esp + 0x14], 0x2a
je 0x46c800
cmp dword [esp + 0x14], 0x2b
je 0x46c800
cmp dword [esp + 0x14], 0x3f
je 0x46c800
cmp dword [esp + 0x14], 0x7b
jne 0x46c6b0
mov eax, dword [esp + 0x10]
inc eax
push eax
call fcn.00434bc1
mov ecx, dword [esp + 0x30]
add esp, 4
test eax, eax
mov eax, dword [esp + 0x10]
jne 0x46c800
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x3c], 0
je 0x46c717
mov edx, dword [esp + 0xb4]
mov esi, edx
dec edx
mov dword [esp + 0xb4], edx
test esi, esi
jg 0x46c717
cmp dword [esp + 0x110], 0
jne 0x46c70f
mov edx, dword [esp + 0x5c]
movzx esi, byte [edx + 2]
movzx edx, byte [edx + 3]
shl esi, 8
or esi, edx
mov edx, esi
mov esi, eax
sub esi, edx
sub esi, dword [edi + 0x18]
mov edx, esi
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x5c]
sar edx, 8
mov byte [esi + 4], dl
mov dl, byte [esp + 0x54]
mov byte [esi + 5], dl
mov dword [esp + 0x5c], 0
mov edx, ecx
and edx, 8
mov dword [esp + 0x40], edx
je 0x46c7a7
mov eax, dword [edi + 0xc]
mov ecx, dword [esp + 0x14]
test byte [ecx + eax], 1
jne 0x46f5a7
mov eax, dword [esp + 0x10]
cmp ecx, 0x23
jne 0x46c7a3
mov cl, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
test cl, cl
je 0x46c79b
lea ecx, [ecx]
mov edx, dword [edi + 0x58]
test edx, edx
je 0x46c80d
mov ecx, dword [edi + 0x1c]
cmp eax, ecx
jae 0x46c833
push ebp
lea eax, [edi + 0x5c]
push eax
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push ecx
call fcn.00433f3b
add esp, 0x14
test eax, eax
mov eax, dword [esp + 0x10]
je 0x46c833
mov ecx, dword [edi + 0x5c]
cmp byte [eax + ecx - 1], 0
lea eax, [eax + ecx - 1]
mov dword [esp + 0x10], eax
jne 0x46f5a7
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x2c]
test ecx, 0x4000
je 0x46c7e3
cmp dword [esp + 0x3c], 0
jne 0x46c7e3
mov byte [ebx], 0x53
mov byte [ebx + 1], 0xff
lea ebp, [ebx + 1]
inc ebp
mov edx, eax
sub edx, dword [edi + 0x18]
mov dword [esp + 0x5c], ebx
sar edx, 8
mov byte [ebp], dl
mov dl, al
sub dl, byte [edi + 0x18]
mov byte [ebp + 2], 0
mov byte [ebp + 1], dl
mov byte [ebp + 3], 0
lea ebx, [ebp + 4]
cmp dword [esp + 0x14], 0x7c
ja case.0x46c7f9.1
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + 0x46fc5f]
jmp dword [edx*4 + 0x46fc2b]
mov dword [esp + 0x3c], 1
jmp 0x46c717
mov edx, dword [edi + 0x5c]
mov esi, dword [edi + 0x1c]
sub esi, edx
cmp eax, esi
ja 0x46c833
cmp cl, byte [edi + 0x60]
jne 0x46c833
cmp edx, 1
je 0x46c785
mov dl, byte [eax + 1]
cmp dl, byte [edi + 0x61]
je 0x46c785
mov cl, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
test cl, cl
jne 0x46c74f
jmp 0x46c79b
test cl, 2
je 0x46c85c
cmp dword [esp + 0x34], 0xfffffffe
jne 0x46c85c
mov dword [esp + 0x34], 0xffffffff
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov byte [ebx], 0x1a
inc ebx
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov byte [ebx], 0x1b
inc ebx
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x46c8b2
or eax, 0xffffffff
mov dword [esp + 0x34], eax
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x60], eax
movsx eax, cl
mov ecx, dword [esp + 0x2c]
and eax, 4
or eax, 0x30
shr eax, 2
mov byte [ebx], al
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
inc ebx
xor esi, esi
jmp 0x46c4e4
test dword [edi + 0x44], 0x2000000
jne 0x46f6b1
cmp dword [esp + 0x30], 0
mov dl, byte [esp + 0x14]
mov ebp, 1
mov byte [esp + 0xac], dl
je 0x46c93e
cmp dword [esp + 0x14], 0xc0
jl 0x46c93e
mov dl, byte [eax + 1]
and dl, 0xc0
cmp dl, 0x80
jne 0x46c93e
movzx edx, byte [eax + 1]
inc eax
mov byte [esp + ebp + 0xac], dl
movzx edx, byte [eax + 1]
and dl, 0xc0
inc ebp
mov dword [esp + 0x10], eax
cmp dl, 0x80
je 0x46c921
movsx eax, cl
and eax, 1
or al, 0x1c
mov dword [esp + 0x18], ebx
mov byte [ebx], al
inc ebx
test ebp, ebp
jle 0x46c965
push ebp
lea eax, [esp + 0xb0]
push eax
push ebx
call fcn.00412300
add esp, 0xc
add ebx, ebp
mov cl, byte [esp + 0xac]
cmp cl, 0xd
je 0x46c976
cmp cl, 0xa
jne 0x46c97a
or dword [edi + 0x48], 0x20
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x46f580
mov edx, dword [esp + 0x4c]
or eax, 0xffffffff
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edx
cmp ebp, 1
je 0x46f567
cmp dword [esp + 0x70], 0
je 0x46f567
mov dword [esp + 0x34], eax
jmp 0x46f5a3
mov cl, byte [eax + 1]
mov dword [esp + 0x18], ebx
cmp cl, 0x3a
je 0x46c9c9
cmp cl, 0x2e
je 0x46c9c9
cmp cl, 0x3d
jne 0x46c9ea
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0xa0]
push ecx
push edx
call fcn.00434197
add esp, 8
test eax, eax
jne 0x46f6d8
mov eax, dword [esp + 0x10]
xor esi, esi
lea ecx, [ecx]
movzx ebp, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
cmp ebp, 0x5c
jne 0x46ca20
inc eax
cmp byte [eax], 0x45
je 0x46c9ef
push 3
push 0x48d294
push eax
call fcn.004153c8
add esp, 0xc
test eax, eax
jne 0x46ca7a
mov eax, dword [esp + 0x10]
add eax, 3
jmp 0x46c9ef
test esi, esi
jne 0x46ca2e
cmp ebp, 0x5e
jne 0x46ca2e
lea esi, [ebp - 0x5d]
jmp 0x46c9ef
mov dword [esp + 0x44], esi
cmp ebp, 0x5d
jne 0x46ca7e
test dword [edi + 0x44], 0x2000000
je 0x46ca7e
neg esi
sbb esi, esi
and esi, 0xffffff9e
add esi, 0x6f
mov eax, esi
mov byte [ebx], al
mov eax, dword [esp + 0x34]
inc ebx
cmp eax, 0xfffffffe
jne 0x46ca5f
or eax, 0xffffffff
mov dword [esp + 0x34], eax
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x46c4e4
mov dword [esp + 0x44], esi
xor esi, esi
push 0x20
lea eax, [esp + 0x7c]
push esi
push eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], 0xffffffff
call fcn.00414580
mov dword [esp + 0x28], esi
add esp, 0xc
lea esi, [ebx + 4]
mov dword [esp + 0x60], esi
test ebp, ebp
je 0x46f7a9
cmp dword [esp + 0x30], 0
je 0x46cb26
cmp ebp, 0x7f
jle 0x46cb26
mov ecx, dword [esp + 0x10]
movzx ebp, byte [ecx]
cmp ebp, 0xc0
jl 0x46cb26
mov edx, ebp
and edx, 0x3f
movzx eax, byte [edx + 0x486780]
mov edx, dword [eax*4 + 0x486768]
and edx, ebp
lea ecx, [eax + eax*2]
add ecx, ecx
shl edx, cl
mov dword [esp + 0x54], eax
mov ebp, edx
mov edx, 1
cmp eax, edx
mov dword [esp + 0x40], edx
jl 0x46cb22
mov edi, edi
mov eax, dword [esp + 0x10]
movzx edx, byte [edx + eax]
mov eax, dword [esp + 0x54]
and edx, 0x3f
sub ecx, 6
shl edx, cl
or ebp, edx
mov edx, dword [esp + 0x40]
inc edx
cmp edx, eax
mov dword [esp + 0x40], edx
jle 0x46caff
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x110]
test eax, eax
je 0x46cb3b
mov ecx, esi
mov esi, dword [esp + 0x60]
sub ecx, esi
add dword [eax], ecx
cmp dword [esp + 0x58], 0
je 0x46cb6d
cmp ebp, 0x5c
jne 0x46d1a4
mov edx, dword [esp + 0x10]
cmp byte [edx + 1], 0x45
jne 0x46d1a4
mov eax, edx
inc eax
mov dword [esp + 0x58], 0
mov dword [esp + 0x10], eax
jmp 0x46d4ed
cmp ebp, 0x5b
jne 0x46cd09
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 1]
cmp al, 0x3a
je 0x46cb8d
cmp al, 0x2e
je 0x46cb8d
cmp al, 0x3d
jne 0x46d1a4
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xa0]
push edx
push eax
call fcn.00434197
add esp, 8
test eax, eax
je 0x46d1a4
mov eax, dword [esp + 0x10]
cmp byte [eax + 1], 0x3a
mov ecx, dword [edi + 8]
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], ecx
jne 0x46f70d
add eax, 2
cmp byte [eax], 0x5e
mov dword [esp + 0x10], eax
jne 0x46cbe6
mov ecx, 1
add eax, ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xa0]
sub edx, eax
push edx
push eax
call fcn.00434147
add esp, 8
test eax, eax
jl 0x46f734
test byte [esp + 0x2c], 1
je 0x46cc13
cmp eax, 2
jg 0x46cc13
xor eax, eax
lea ebp, [eax + eax*2]
mov eax, dword [ebp*4 + 0x487388]
add eax, dword [esp + 0x3c]
push 0x20
push eax
lea ecx, [esp + 0xd4]
push ecx
call fcn.00412300
mov ecx, dword [ebp*4 + 0x48738c]
mov ebp, dword [ebp*4 + 0x487390]
add esp, 0xc
test ecx, ecx
jl 0x46cc81
mov edx, dword [esp + 0x3c]
xor eax, eax
add ecx, edx
test ebp, ebp
jl 0x46cc6f
mov dl, byte [ecx + eax]
or byte [esp + eax + 0xcc], dl
inc eax
cmp eax, 0x20
jl 0x46cc52
jmp 0x46cc81
mov dl, byte [ecx + eax]
not dl
and byte [esp + eax + 0xcc], dl
inc eax
cmp eax, 0x20
jl 0x46cc6f
test ebp, ebp
jge 0x46cc87
neg ebp
cmp ebp, 1
jne 0x46cc96
and byte [esp + 0xcd], 0xc3
jmp 0x46cca3
cmp ebp, 2
jne 0x46cca3
and byte [esp + 0xd7], 0x7f
xor eax, eax
cmp dword [esp + 0x40], eax
je 0x46ccdf
lea esp, [esp]
mov cl, byte [esp + eax + 0xcc]
not cl
or byte [esp + eax + 0x78], cl
inc eax
cmp eax, 0x20
jl 0x46ccaf
mov eax, dword [esp + 0xa0]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0xa
jmp 0x46d4ed
mov dl, byte [esp + eax + 0xcc]
or byte [esp + eax + 0x78], dl
inc eax
cmp eax, 0x20
jl 0x46ccdf
mov eax, dword [esp + 0xa0]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0xa
jmp 0x46d4ed
cmp ebp, 0x5c
jne 0x46d1a4
mov ecx, dword [esp + 0x2c]
mov edx, dword [edi + 0x34]
mov eax, dword [esp + 0xfc]
push 1
push ecx
push edx
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.00434c49
mov edx, dword [esp + 0x110]
add esp, 0x14
cmp dword [edx], 0
mov ebp, eax
jne 0x46fbfa
mov ecx, ebp
neg ecx
cmp ecx, 5
jne 0x46cd55
lea ebp, [ecx + 3]
jmp 0x46d1a4
cmp ecx, 0x16
jne 0x46cd62
lea ebp, [ecx + 0x42]
jmp 0x46d1a4
cmp ecx, 0x11
jne 0x46cd6f
lea ebp, [ecx + 0x41]
jmp 0x46d1a4
cmp ecx, 0x1a
jne 0x46cd9d
mov eax, dword [esp + 0x10]
cmp byte [eax + 1], 0x5c
jne 0x46cd90
cmp byte [eax + 2], 0x45
jne 0x46cd90
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x46d4ed
mov dword [esp + 0x58], 1
jmp 0x46d4ed
cmp ecx, 0x19
je 0x46d4ed
test ebp, ebp
jge 0x46d1a4
add dword [esp + 0x20], 2
cmp dword [esp + 0x110], 0
mov eax, dword [edi + 8]
jne 0x46ceab
lea edx, [ecx - 6]
cmp edx, 5
ja case.default.0x46cdd0
jmp dword [edx*4 + 0x46fcdf]
xor ebp, ebp
lea ebx, [ebx]
mov cl, byte [eax + ebp + 0x40]
or byte [esp + ebp + 0x78], cl
inc ebp
cmp ebp, 0x20
jl 0x46cddf
jmp 0x46d4ed
mov dword [esp + 0x38], 1
xor ebp, ebp
lea ecx, [ecx]
mov dl, byte [eax + ebp + 0x40]
not dl
or byte [esp + ebp + 0x78], dl
inc ebp
cmp ebp, 0x20
jl 0x46cdff
jmp 0x46d4ed
xor ebp, ebp
jmp 0x46ce1f
mov cl, byte [eax + ebp + 0xa0]
or byte [esp + ebp + 0x78], cl
inc ebp
cmp ebp, 0x20
jl 0x46ce1f
jmp 0x46d4ed
mov dword [esp + 0x38], 1
xor ebp, ebp
mov dl, byte [eax + ebp + 0xa0]
not dl
or byte [esp + ebp + 0x78], dl
inc ebp
cmp ebp, 0x20
jl 0x46ce3f
jmp 0x46d4ed
lea ecx, [esp + 0x78]
xor ebp, ebp
sub eax, ecx
lea ecx, [esp + ebp + 0x78]
mov dl, byte [eax + ecx]
or byte [ecx], dl
inc ebp
cmp ebp, 0x20
jl 0x46ce5f
and byte [esp + 0x79], 0xf7
jmp 0x46d4ed
lea edx, [esp + 0x78]
xor ecx, ecx
mov dword [esp + 0x38], 1
sub eax, edx
lea esp, [esp]
lea ebp, [esp + ecx + 0x78]
mov dl, byte [eax + ebp]
not dl
or byte [ebp], dl
inc ecx
cmp ecx, 0x20
jl 0x46ce8f
or byte [esp + 0x79], 8
jmp 0x46d4ed
cmp ebp, 0xfffffff9
je 0x46d4ed
cmp ebp, 0xfffffffa
je 0x46d4ed
cmp ebp, 0xfffffff5
je 0x46d4ed
cmp ebp, 0xfffffff6
je 0x46d4ed
cmp ebp, 0xfffffff7
je 0x46d4ed
cmp ebp, 0xfffffff8
je 0x46d4ed
cmp ecx, 0x13
jne 0x46cf8a
or byte [esp + 0x79], 2
or byte [esp + 0x7c], 1
or byte [esp + 0x8c], 1
cmp dword [esp + 0x30], 0
je 0x46d4ed
mov byte [esi], 1
inc esi
push esi
push 0x1680
mov dword [esp + 0x24], 1
call fcn.00433da0
add esi, eax
mov byte [esi], 1
inc esi
push esi
push 0x180e
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x2000
call fcn.00433da0
add esi, eax
push esi
push 0x200a
call fcn.00433da0
add esi, eax
mov byte [esi], 1
inc esi
push esi
push 0x202f
call fcn.00433da0
add esi, eax
mov byte [esi], 1
inc esi
push esi
push 0x205f
call fcn.00433da0
add esi, eax
mov byte [esi], 1
inc esi
push esi
push 0x3000
call fcn.00433da0
add esp, 0x38
add esi, eax
jmp 0x46d4ed
cmp ecx, 0x12
jne 0x46d0b1
xor eax, eax
mov ecx, eax
sub ecx, 1
mov edx, 0xff
je 0x46cfb2
sub ecx, 3
je 0x46cfab
sub ecx, 0x10
jne 0x46cfb7
mov edx, 0xfe
jmp 0x46cfb7
mov edx, 0xfd
or byte [esp + eax + 0x78], dl
inc eax
cmp eax, 0x20
jl 0x46cf95
cmp dword [esp + 0x30], 0
je 0x46d4ed
mov byte [esi], 2
inc esi
push esi
push 0x100
mov dword [esp + 0x24], 1
call fcn.00433da0
add esi, eax
push esi
push 0x167f
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x1681
call fcn.00433da0
add esi, eax
push esi
push 0x180d
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x180f
call fcn.00433da0
add esi, eax
push esi
push 0x1fff
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x200b
call fcn.00433da0
add esi, eax
push esi
push 0x202e
call fcn.00433da0
add esi, eax
mov byte [esi], 2
add esp, 0x40
inc esi
push esi
push 0x2030
call fcn.00433da0
add esi, eax
push esi
push 0x205e
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x2060
call fcn.00433da0
add esi, eax
push esi
push 0x2fff
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x3001
call fcn.00433da0
add esi, eax
push esi
push accept
call fcn.00433da0
add esp, 0x30
add esi, eax
jmp 0x46d4ed
cmp ecx, 0x15
jne 0x46d0fc
or byte [esp + 0x79], 0x3c
or byte [esp + 0x88], 0x20
cmp dword [esp + 0x30], 0
je 0x46d4ed
mov byte [esi], 2
inc esi
push esi
push 0x2028
mov dword [esp + 0x24], 1
call fcn.00433da0
add esi, eax
push esi
push 0x2029
call fcn.00433da0
add esp, 0x10
add esi, eax
jmp 0x46d4ed
cmp ecx, 0x14
jne 0x46d18d
xor eax, eax
jmp 0x46d10f
mov ecx, eax
sub ecx, 1
mov edx, 0xff
je 0x46d127
sub ecx, 0xf
jne 0x46d12c
mov edx, 0xdf
jmp 0x46d12c
mov edx, 0xc3
or byte [esp + eax + 0x78], dl
inc eax
cmp eax, 0x20
jl 0x46d10f
cmp dword [esp + 0x30], 0
je 0x46d4ed
mov byte [esi], 2
inc esi
push esi
push 0x100
mov dword [esp + 0x24], 1
call fcn.00433da0
add esi, eax
push esi
push 0x2027
call fcn.00433da0
add esi, eax
mov byte [esi], 2
inc esi
push esi
push 0x2029
call fcn.00433da0
add esi, eax
push esi
push accept
call fcn.00433da0
add esp, 0x20
add esi, eax
jmp 0x46d4ed
test byte [esp + 0x2c], 0x40
jne 0x46f75b
mov eax, dword [esp + 0x10]
sub dword [esp + 0x20], 2
movzx ebp, byte [eax]
mov eax, dword [esp + 0x10]
xor ecx, ecx
cmp byte [eax + 1], 0x5c
jne 0x46d1c7
cmp byte [eax + 2], 0x45
jne 0x46d1c3
add eax, 2
cmp byte [eax + 1], 0x5c
mov dword [esp + 0x58], ecx
je 0x46d1b0
mov dword [esp + 0x10], eax
mov dword [esp + 0x3c], eax
cmp ebp, 0xd
je 0x46d1d5
cmp ebp, 0xa
jne 0x46d1d9
or dword [edi + 0x48], 0x20
cmp dword [esp + 0x58], ecx
jne 0x46d46e
mov ecx, dword [esp + 0x10]
cmp byte [ecx + 1], 0x2d
jne 0x46d46e
mov eax, ecx
add eax, 2
cmp byte [eax], 0x5c
mov dword [esp + 0x10], eax
jne 0x46d249
cmp byte [eax + 1], 0x45
jne 0x46d20f
add eax, 2
cmp byte [eax], 0x5c
je 0x46d1ff
jmp 0x46d245
cmp byte [eax], 0x5c
mov dword [esp + 0x10], eax
jne 0x46d249
lea esp, [esp]
cmp byte [eax + 1], 0x51
jne 0x46d245
add eax, 2
cmp byte [eax], 0x5c
jne 0x46d23d
cmp byte [eax + 1], 0x45
jne 0x46d23d
add eax, 2
cmp byte [eax], 0x5c
je 0x46d21f
jmp 0x46d245
mov dword [esp + 0x58], 1
mov dword [esp + 0x10], eax
mov al, byte [eax]
test al, al
je 0x46d466
cmp dword [esp + 0x58], 0
jne 0x46d262
cmp al, 0x5d
je 0x46d466
cmp dword [esp + 0x30], 0
je 0x46d2da
movzx edx, al
cmp edx, 0xc0
mov dword [esp + 0x14], edx
jl 0x46d2e1
mov eax, edx
and eax, 0x3f
movzx eax, byte [eax + 0x486780]
mov dword [esp + 0x50], eax
lea ecx, [eax + eax*2]
mov eax, dword [eax*4 + 0x486768]
and eax, edx
mov edx, dword [esp + 0x50]
add ecx, ecx
shl eax, cl
mov dword [esp + 0x14], eax
mov eax, 1
cmp edx, eax
mov dword [esp + 0x40], eax
jl 0x46d2d4
mov edi, edi
mov edx, dword [esp + 0x10]
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x50]
and eax, 0x3f
sub ecx, 6
shl eax, cl
or dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
inc eax
cmp eax, edx
mov dword [esp + 0x40], eax
jle 0x46d2af
add dword [esp + 0x10], edx
jmp 0x46d2e1
movzx ecx, al
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x58], 0
jne 0x46d35a
cmp dword [esp + 0x14], 0x5c
jne 0x46d35a
mov edx, dword [esp + 0x2c]
mov eax, dword [edi + 0x34]
mov ecx, dword [esp + 0xfc]
push 1
push edx
push eax
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00434c49
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x110]
add esp, 0x14
cmp dword [eax], 0
jne 0x46fbfa
mov eax, dword [esp + 0x14]
test eax, eax
jge 0x46d35a
cmp eax, 0xfffffffb
jne 0x46d33a
mov dword [esp + 0x14], 8
jmp 0x46d35a
cmp eax, 0xffffffea
jne 0x46d349
mov dword [esp + 0x14], 0x58
jmp 0x46d35a
cmp eax, 0xffffffef
jne 0x46d45c
mov dword [esp + 0x14], 0x52
mov eax, dword [esp + 0x14]
cmp eax, ebp
jl 0x46f782
je 0x46d46e
cmp eax, 0xd
je 0x46d376
cmp eax, 0xa
jne 0x46d37a
or dword [edi + 0x48], 0x20
cmp dword [esp + 0x30], 0
je 0x46d3d9
cmp eax, 0xff
jg 0x46d394
test byte [esp + 0x2c], 1
je 0x46d3d9
cmp eax, 0x7f
jle 0x46d3d9
mov byte [esi], 2
inc esi
push esi
push ebp
mov dword [esp + 0x24], 1
call fcn.00433da0
mov edx, dword [esp + 0x1c]
add esi, eax
push esi
push edx
call fcn.00433da0
add esp, 0x10
add esi, eax
test byte [esp + 0x2c], 1
je 0x46d4ed
cmp ebp, 0x7f
jg 0x46d4ed
mov dword [esp + 0x14], 0x7f
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov ecx, eax
sub ecx, ebp
cmp dword [esp + 0x110], 0
lea ecx, [edx + ecx + 1]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
jne 0x46d4ed
cmp ebp, dword [esp + 0x14]
jg 0x46d4ed
mov eax, dword [esp + 0x2c]
and eax, 1
mov dword [esp + 0x54], eax
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov ecx, ebp
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x78]
or byte [eax], dl
cmp dword [esp + 0x54], 0
je 0x46d450
mov eax, dword [edi + 4]
movzx ecx, byte [eax + ebp]
mov eax, ecx
cdq
and edx, 7
add eax, edx
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea eax, [esp + eax + 0x78]
or byte [eax], dl
inc ebp
cmp ebp, dword [esp + 0x14]
jle 0x46d410
jmp 0x46d4ed
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x10], ecx
jmp 0x46d46e
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
cmp dword [esp + 0x30], 0
je 0x46d4a3
cmp ebp, 0xff
jg 0x46d489
test byte [esp + 0x2c], 1
je 0x46d4a3
cmp ebp, 0x7f
jle 0x46d4a3
mov byte [esi], 1
inc esi
push esi
push ebp
mov dword [esp + 0x24], 1
call fcn.00433da0
add esp, 8
add esi, eax
jmp 0x46d4ed
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov ecx, ebp
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x78]
or byte [eax], dl
test byte [esp + 0x2c], 1
je 0x46d4e5
mov eax, dword [edi + 4]
movzx ebp, byte [eax + ebp]
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov ecx, ebp
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea eax, [esp + eax + 0x78]
or byte [eax], dl
inc dword [esp + 0x20]
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x10]
movzx ebp, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
test ebp, ebp
je 0x46f7a9
cmp ebp, 0x5d
jne 0x46cab3
cmp dword [esp + 0x58], 0
jne 0x46cab3
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
cmp ebp, 1
jne 0x46d54e
cmp dword [esp + 0x1c], 0
jne 0x46d54e
mov eax, dword [esp + 0x30]
test eax, eax
je 0x46d5ca
test ecx, ecx
je 0x46d5ca
mov edx, dword [esp + 0x24]
cmp edx, 0x80
jl 0x46d5ce
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x46d55e
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp dword [esp + 0x1c], 0
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edx
je 0x46d678
cmp dword [esp + 0x38], 0
jne 0x46d678
mov byte [esi], 0
mov byte [ebx], 0x50
add ebx, 3
xor eax, eax
inc esi
test ecx, ecx
setne al
mov byte [ebx], al
test ebp, ebp
jle 0x46d64a
or al, 2
mov byte [ebx], al
inc ebx
mov eax, esi
sub eax, ebx
push eax
lea ecx, [ebx + 0x20]
push ebx
push ecx
call fcn.00415f40
push 0x20
lea edx, [esp + 0x88]
push edx
push ebx
call fcn.00412300
add esp, 0x18
lea ebx, [esi + 0x20]
jmp 0x46d64c
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x60], esi
test ecx, ecx
je 0x46d60c
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x46d5ea
or eax, 0xffffffff
mov dword [esp + 0x34], eax
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov byte [ebx], 0x1e
inc ebx
mov byte [ebx], dl
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x10]
inc ebx
xor esi, esi
jmp 0x46c4e4
test eax, eax
je 0x46d635
cmp edx, 0x7f
jle 0x46d635
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0xac]
push eax
push ecx
call fcn.00433da0
mov ecx, dword [esp + 0x34]
add esp, 8
mov ebp, eax
jmp 0x46c93e
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0xac], dl
mov ebp, 1
jmp 0x46c93e
mov ebx, esi
mov eax, dword [esp + 0x18]
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov ecx, ebx
sub ecx, eax
sar ecx, 8
mov dl, bl
sub dl, al
mov byte [eax + 1], cl
mov ecx, dword [esp + 0x2c]
mov byte [eax + 2], dl
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x46c4e4
xor eax, eax
cmp ecx, dword [esp + 0x38]
setne al
inc ebx
add eax, 0x4e
mov byte [ebx - 1], al
test ecx, ecx
je 0x46d6ca
cmp dword [esp + 0x110], 0
jne 0x46d6da
lea esi, [esp + 0x78]
mov eax, ebx
sub esi, ebx
mov ebp, 0x20
mov cl, byte [esi + eax]
not cl
mov byte [eax], cl
inc eax
sub ebp, 1
jne 0x46d6a3
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
add ebx, 0x20
xor esi, esi
jmp 0x46c4e4
push 0x20
lea edx, [esp + 0x7c]
push edx
push ebx
call fcn.00412300
add esp, 0xc
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
add ebx, 0x20
xor esi, esi
jmp 0x46c4e4
cmp dword [esp + 0x3c], 0
je case.0x46c7f9.1
mov esi, dword [esp + 0xfc]
mov edx, dword [esp + 0x10]
push esi
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x50]
push ecx
inc edx
push edx
call fcn.00434b1e
add esp, 0x10
cmp dword [esi], 0
mov dword [esp + 0x10], eax
jne 0x46fbfa
jmp 0x46d75a
mov dword [esp + 0x28], 0xffffffff
jmp 0x46d752
mov dword [esp + 0x48], 1
mov dword [esp + 0x28], 0xffffffff
jmp 0x46d75a
mov dword [esp + 0x28], 1
mov dword [esp + 0x48], 0
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
test esi, esi
je 0x46f7d0
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x46d782
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x10]
sub eax, edx
neg eax
sbb eax, eax
and eax, 0x200
mov dword [esp + 0x74], eax
mov al, byte [ecx + 1]
xor ebp, ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], esi
cmp al, 0x2b
jne 0x46d7bc
xor eax, eax
mov ebp, 1
inc ecx
mov dword [esp + 0x38], ebp
mov dword [esp + 0x10], ecx
jmp 0x46d7d5
cmp al, 0x3f
jne 0x46d7ce
mov eax, dword [esp + 0xc8]
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x46d7d5
mov eax, dword [esp + 0xc0]
mov cl, byte [esi]
mov dword [esp + 0x1c], eax
cmp cl, 0x1c
je 0x46ddb2
cmp cl, 0x1d
je 0x46ddb2
cmp cl, 0x1e
jne 0x46d842
movzx edx, byte [esi + 1]
mov dword [esp + 0x20], 0xd
mov dword [esp + 0x14], edx
test ebp, ebp
jne 0x46de63
cmp dword [esp + 0x28], ebp
jge 0x46de63
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
push edi
push eax
mov eax, dword [esp + 0x1c]
inc ecx
push ecx
push ebp
push edx
push eax
push 0x1e
call fcn.00442637
add esp, 0x1c
test eax, eax
je 0x46de63
jmp 0x46de53
cmp cl, 0x17
jae 0x46d882
movzx ecx, cl
mov dword [esp + 0x20], 0x1a
mov dword [esp + 0x14], ecx
test ebp, ebp
jne 0x46de63
cmp dword [esp + 0x28], ebp
jge 0x46de63
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
push edi
push edx
mov edx, dword [esp + 0x1c]
inc eax
push eax
push ebp
push ecx
push ebp
push edx
jmp 0x46d82d
cmp cl, 0x4e
je 0x46dd1f
cmp cl, 0x4f
je 0x46dd1f
cmp cl, 0x50
je 0x46dd1f
cmp cl, 0x51
je 0x46dd1f
cmp cl, 0x5e
je 0x46d8ea
cmp cl, 0x5f
je 0x46d8ea
cmp cl, 0x5d
je 0x46d8ea
cmp cl, 0x60
je 0x46d8ea
cmp cl, 0x6f
je 0x46e327
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0xb
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
xor ebp, ebp
mov eax, ebx
sub eax, esi
mov dword [esp + 0x50], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ebp
cmp cl, 0x60
jne 0x46d90b
cmp byte [esi + 3], 0x68
je 0x46f7f7
cmp edx, 0xffffffff
jne 0x46d92c
movzx eax, byte [esi + 1]
movzx ecx, byte [esi + 2]
shl eax, 8
or eax, ecx
add esi, eax
cmp byte [esi], 0x55
jne 0x46d910
mov eax, ebx
sub eax, esi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x48]
cmp eax, ebp
jne 0x46da24
cmp edx, 1
mov byte [ebx], 0
jg 0x46d9c3
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
push edx
push edi
push eax
push 1
push ecx
call fcn.00442f7b
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
push edx
lea esi, [eax + 1]
push eax
push esi
call fcn.00415f40
add esp, 0x20
inc ebx
cmp dword [esp + 0x28], ebp
jne 0x46d9a5
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov byte [eax], 0x72
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov cl, byte [esp + 0x1c]
mov edx, dword [esp + 0x18]
add cl, 0x69
dec dword [esp + 0x28]
mov byte [edx], cl
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], esi
jmp 0x46db1b
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x18]
push eax
push edi
push ecx
push 4
push edx
call fcn.00442f7b
mov eax, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x30]
push eax
add eax, 4
push eax
call fcn.00415f40
mov cl, byte [esp + 0x3c]
mov eax, dword [esp + 0x38]
add cl, 0x69
mov byte [eax], cl
inc eax
mov byte [eax], 0x5e
inc eax
mov dword [esp + 0x44], eax
mov byte [eax], 0
mov byte [eax + 1], 0
add eax, 2
add esp, 0x20
add ebx, 4
dec dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jmp 0x46db1b
cmp eax, 1
jle 0x46db0b
mov edx, dword [esp + 0x110]
test edx, edx
je 0x46da7b
mov eax, dword [esp + 0x48]
dec eax
mov dword [esp + 0x54], eax
imul eax, dword [esp + 0x68]
fild dword [esp + 0x54]
fimul dword [esp + 0x68]
mov ecx, eax
fcomp qword [0x48d360]
fnstsw ax
test ah, 0x41
je 0x46f81e
mov eax, dword [edx]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, ecx
jl 0x46f81e
add ecx, eax
mov dword [edx], ecx
jmp 0x46db0b
cmp dword [esp + 0xa4], 0
je 0x46da94
cmp dword [esp + 0x4c], 0
jge 0x46da94
mov edx, dword [esp + 0x34]
mov dword [esp + 0x4c], edx
cmp dword [esp + 0x48], 1
jle 0x46db0b
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x64]
dec eax
mov dword [esp + 0x40], eax
lea esp, [esp]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov esi, dword [edi + 0x24]
push ecx
push edx
push ebx
call fcn.00412300
mov eax, dword [esp + 0x2c]
add esp, 0xc
cmp ebp, esi
jae 0x46dafc
mov edi, edi
movzx ecx, byte [ebp]
movzx edx, byte [ebp + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [edi + 0x24]
add ecx, eax
sar ecx, 8
mov byte [edx], cl
mov cl, byte [ebp + 1]
mov edx, dword [edi + 0x24]
add cl, al
mov byte [edx + 1], cl
add dword [edi + 0x24], 2
add ebp, 2
cmp ebp, esi
jb 0x46dacf
mov ebp, esi
add ebx, eax
sub dword [esp + 0x40], 1
mov dword [esp + 0x64], ebp
jne 0x46daaf
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x46db1d
sub ecx, dword [esp + 0x48]
mov dword [esp + 0x28], ecx
test ecx, ecx
jl 0x46dc9d
mov edx, dword [esp + 0x110]
test edx, edx
je 0x46db78
test ecx, ecx
jle 0x46db78
mov eax, dword [esp + 0x68]
add eax, 7
mov dword [esp + 0x54], eax
imul eax, ecx
fild dword [esp + 0x54]
fimul dword [esp + 0x28]
sub eax, 6
mov ecx, eax
fcomp qword [0x48d360]
fnstsw ax
test ah, 0x41
je 0x46f5e5
mov eax, dword [edx]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, ecx
jl 0x46f5e5
add ecx, eax
mov dword [edx], ecx
jmp 0x46dc49
lea esi, [ecx - 1]
test esi, esi
jl 0x46dc49
mov al, byte [esp + 0x1c]
add al, 0x69
mov byte [esp + 0x6f], al
mov edi, edi
mov eax, dword [edi + 0x24]
mov cl, byte [esp + 0x6f]
mov byte [ebx], cl
inc ebx
mov dword [esp + 0x1c], eax
test esi, esi
je 0x46dbc6
mov ecx, dword [esp + 0x24]
mov byte [ebx], 0x5e
inc ebx
test ecx, ecx
jne 0x46dbb1
xor eax, eax
jmp 0x46dbb5
mov eax, ebx
sub eax, ecx
mov edx, eax
sar edx, 8
mov dword [esp + 0x24], ebx
mov byte [ebx], dl
mov byte [ebx + 1], al
add ebx, 2
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
push eax
push ecx
push ebx
call fcn.00412300
mov ebp, dword [esp + 0x70]
mov edx, dword [esp + 0x28]
add esp, 0xc
cmp ebp, edx
jae 0x46dc32
movzx edx, byte [ebp]
movzx ecx, byte [ebp + 1]
mov eax, esi
neg eax
sbb eax, eax
and eax, 3
shl edx, 8
inc eax
or edx, ecx
mov ecx, dword [esp + 0x20]
add edx, eax
mov eax, dword [edi + 0x24]
add edx, ecx
sar edx, 8
mov byte [eax], dl
mov dl, byte [ebp + 1]
mov eax, esi
neg eax
sbb eax, eax
and eax, 3
inc eax
add dl, al
mov eax, dword [edi + 0x24]
add dl, cl
mov byte [eax + 1], dl
add dword [edi + 0x24], 2
add ebp, 2
cmp ebp, dword [esp + 0x1c]
jb 0x46dbe5
jmp 0x46dc36
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
add ebx, ecx
sub esi, 1
mov dword [esp + 0x64], edx
jns 0x46db8f
cmp dword [esp + 0x24], 0
je 0x46e064
mov edx, dword [esp + 0x24]
lea esp, [esp]
mov eax, ebx
sub eax, edx
inc eax
mov ebp, ebx
sub ebp, eax
movzx ecx, byte [ebp + 1]
movzx esi, byte [ebp + 2]
shl ecx, 8
or ecx, esi
jne 0x46dc7b
xor edx, edx
jmp 0x46dc7d
sub edx, ecx
mov byte [ebx], 0x55
inc ebx
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
mov byte [ebp + 1], cl
mov byte [ebp + 2], al
test edx, edx
jne 0x46dc5f
jmp 0x46e064
mov ebp, ebx
sub ebp, dword [esp + 0x50]
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp + 2]
shl eax, 8
or eax, ecx
mov esi, ebp
sub esi, eax
mov al, byte [esp + 0x1c]
add al, 0x56
cmp dword [esp + 0x110], 0
mov byte [ebp], al
jne 0x46e064
cmp byte [esi], 0x5d
je 0x46e064
mov dword [esp + 0x24], esi
lea esp, [esp]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
push edx
push ebp
push eax
call fcn.0044301a
add esp, 0xc
test eax, eax
jne 0x46dd17
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax + 1]
movzx edx, byte [eax + 2]
shl ecx, 8
or ecx, edx
add eax, ecx
cmp byte [eax], 0x54
mov dword [esp + 0x24], eax
je 0x46dcdf
jmp 0x46e064
add byte [esi], 3
jmp 0x46e064
test edx, edx
jne 0x46dd47
mov ecx, dword [esp + 0x74]
or dword [edi + 0x4c], ecx
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov ebx, esi
mov dword [esp + 0x18], edx
xor esi, esi
jmp 0x46c4e4
cmp dword [esp + 0x48], 0
jne 0x46dd5c
cmp edx, 0xffffffff
jne 0x46dd71
add al, 0x46
mov byte [ebx], al
jmp 0x46e063
cmp dword [esp + 0x48], 1
jne 0x46dd7f
cmp edx, 0xffffffff
jne 0x46dd7f
add al, 0x48
mov byte [ebx], al
jmp 0x46e063
cmp edx, 1
jne 0x46dd7f
add al, 0x4a
mov byte [ebx], al
jmp 0x46e063
add al, 0x4c
mov byte [ebx], al
mov eax, dword [esp + 0x48]
inc ebx
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
cmp edx, 0xffffffff
jne 0x46dda0
xor edx, edx
mov dword [esp + 0x28], edx
mov eax, edx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], dl
add ebx, 2
jmp 0x46e064
mov esi, dword [esp + 0x30]
test esi, esi
je 0x46ddff
test byte [ebx - 1], 0x80
lea eax, [ebx - 1]
je 0x46ddff
mov cl, byte [eax]
and cl, 0xc0
cmp cl, 0x80
jne 0x46dddb
mov edi, edi
mov dl, byte [eax - 1]
dec eax
and dl, 0xc0
cmp dl, 0x80
je 0x46ddcf
mov ecx, ebx
sub ecx, eax
push ecx
push eax
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0x20], ecx
call fcn.00412300
add esp, 0xc
or dword [esp + 0x14], 0x80
jmp 0x46de1b
cmp dword [esp + 0x48], 1
movzx ecx, byte [ebx - 1]
mov dword [esp + 0x14], ecx
jle 0x46de1b
mov eax, dword [edi + 0x4c]
or eax, ecx
or eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
test ebp, ebp
jne 0x46de63
cmp dword [esp + 0x28], ebp
jge 0x46de63
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
push edi
push ecx
mov ecx, dword [esp + 0x1c]
inc edx
push edx
mov edx, dword [esp + 0x24]
lea eax, [esp + 0xc4]
push eax
movzx eax, byte [edx]
push esi
push ecx
push eax
call fcn.00442637
add esp, 0x1c
test eax, eax
je 0x46de63
mov dword [esp + 0x1c], 0
mov dword [esp + 0x38], 1
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
cmp al, 0x10
je 0x46de7c
cmp al, 0xf
je 0x46de7c
mov eax, 0xffffffff
mov dword [esp + 0x24], eax
jmp 0x46de88
movzx edx, byte [ecx + 1]
movzx eax, byte [ecx + 2]
mov dword [esp + 0x24], edx
cmp dword [esp + 0x28], 0
mov esi, ebx
mov dword [esp + 0x50], eax
mov ebx, ecx
je 0x46e327
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x48]
add eax, ecx
mov dword [esp + 0x1c], eax
test edx, edx
jne 0x46dee8
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x18]
cmp ecx, 0xffffffff
jne 0x46dec8
add al, 0x1f
mov byte [ebx], al
inc ebx
jmp 0x46e02f
cmp ecx, 1
jne 0x46ded7
add al, 0x23
mov byte [ebx], al
inc ebx
jmp 0x46e02f
add al, 0x25
mov byte [ebx], al
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
jmp 0x46e029
cmp edx, 1
jne 0x46df30
mov ecx, dword [esp + 0x28]
cmp ecx, 0xffffffff
jne 0x46df04
mov ebx, dword [esp + 0x18]
add al, 0x21
mov byte [ebx], al
inc ebx
jmp 0x46e02f
mov ebx, esi
cmp ecx, 1
je 0x46e327
mov al, byte [esp + 0x1c]
add al, 0x25
mov byte [esi], al
mov eax, dword [esp + 0x28]
lea ecx, [eax - 1]
sar ecx, 8
lea ebx, [esi + 1]
dec al
mov byte [ebx], cl
mov byte [ebx + 1], al
jmp 0x46e02c
mov ebx, dword [esp + 0x18]
add cl, 0x27
mov byte [ebx], cl
inc ebx
mov ecx, edx
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], dl
add ebx, 2
cmp dword [esp + 0x28], 0
jge 0x46dfab
cmp dword [esp + 0x30], 0
je 0x46df88
cmp dword [esp + 0x14], 0x80
jl 0x46df88
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea edx, [esp + 0xbc]
push edx
push ebx
call fcn.00412300
mov eax, dword [esp + 0x28]
add ebx, esi
add al, 0x1f
add esp, 0xc
mov byte [ebx], al
inc ebx
jmp 0x46e02f
mov cl, byte [esp + 0x14]
mov byte [ebx], cl
mov ecx, dword [esp + 0x24]
inc ebx
test ecx, ecx
jl 0x46dfa1
mov dl, byte [esp + 0x50]
mov byte [ebx], cl
inc ebx
mov byte [ebx], dl
inc ebx
add al, 0x1f
mov byte [ebx], al
inc ebx
jmp 0x46e02f
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x28], ecx
je 0x46e02f
cmp dword [esp + 0x30], 0
je 0x46dfe7
cmp dword [esp + 0x14], 0x80
jl 0x46dfe7
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea edx, [esp + 0xbc]
push edx
push ebx
call fcn.00412300
mov eax, dword [esp + 0x28]
add esp, 0xc
add ebx, esi
jmp 0x46dfee
mov cl, byte [esp + 0x14]
mov byte [ebx], cl
inc ebx
cmp dword [esp + 0x24], 0
mov ecx, dword [esp + 0x28]
jl 0x46e009
movzx edx, byte [esp + 0x24]
mov byte [ebx], dl
movzx edx, byte [esp + 0x50]
inc ebx
mov byte [ebx], dl
inc ebx
sub ecx, dword [esp + 0x48]
mov dword [esp + 0x28], ecx
cmp ecx, 1
jne 0x46e01d
add al, 0x23
mov byte [ebx], al
inc ebx
jmp 0x46e02f
add al, 0x25
mov byte [ebx], al
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
cmp dword [esp + 0x30], 0
je 0x46e05d
cmp dword [esp + 0x14], 0x80
jl 0x46e05d
mov esi, dword [esp + 0x14]
and esi, 7
push esi
lea ecx, [esp + 0xbc]
push ecx
push ebx
call fcn.00412300
add esp, 0xc
add ebx, esi
jmp 0x46e064
mov dl, byte [esp + 0x14]
mov byte [ebx], dl
inc ebx
cmp dword [esp + 0x38], 0
je 0x46e327
mov ebp, dword [esp + 0x3c]
mov al, byte [ebp]
cmp al, 0x41
jne 0x46e098
mov al, byte [ebp + 3]
cmp al, 0x10
je 0x46e08d
cmp al, 0xf
je 0x46e08d
xor eax, eax
lea ebp, [eax + ebp + 4]
jmp 0x46e0c9
mov eax, 2
lea ebp, [eax + ebp + 4]
jmp 0x46e0c9
cmp al, 0x27
je 0x46e0a0
cmp al, 0x34
jne 0x46e0c9
movzx eax, al
movzx ecx, byte [eax + 0x4866c0]
add ebp, ecx
cmp dword [esp + 0x30], 0
je 0x46e0c9
mov al, byte [ebp - 1]
cmp al, 0xc0
jb 0x46e0c9
movzx edx, al
and edx, 0x3f
movzx eax, byte [edx + 0x486780]
add ebp, eax
mov eax, ebx
sub eax, ebp
mov dword [esp + 0x40], eax
test eax, eax
jle 0x46e327
movzx eax, byte [ebp]
add eax, 0xffffffe1
cmp eax, 0x20
ja case.0x46e0f0.32
movzx ecx, byte [eax + 0x46fd2b]
jmp dword [ecx*4 + 0x46fcf7]
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x28
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x29
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x2a
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x2b
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x42
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x43
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x44
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x45
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x35
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x36
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x37
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0x74]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov byte [ebp], 0x38
or dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov edx, dword [esp + 0x40]
push edx
lea eax, [ebp + 3]
push ebp
push eax
call fcn.00415f40
mov ecx, dword [esp + 0x4c]
add ecx, 3
mov byte [ebp], 0x5d
mov byte [ebx + 3], 0x55
add ebx, 3
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add esp, 0xc
mov byte [ebp + 1], al
add ebx, 2
mov byte [ebp + 2], cl
mov ecx, dword [esp + 0x74]
or dword [edi + 0x4c], ecx
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov edx, dword [edi + 0x24]
inc eax
xor esi, esi
mov dword [esp + 0x64], edx
mov dl, byte [eax]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], 0x5f
mov dword [esp + 0x50], esi
mov dword [esp + 0x10], eax
cmp dl, 0x2a
jne 0x46e485
movzx ebp, byte [eax + 1]
mov esi, dword [edi + 0xc]
test byte [esi + ebp], 2
je 0x46e485
inc eax
mov edx, eax
mov dword [esp + 0x50], str.ACCEPT
mov dword [esp + 0x74], edx
mov dword [esp + 0x18], 0
movzx ecx, byte [eax + 1]
inc eax
test byte [ecx + esi], 2
jne 0x46e3a2
mov cl, byte [eax]
mov dword [esp + 0x10], eax
cmp cl, 0x3a
je 0x46f845
cmp cl, 0x29
jne 0x46f86c
mov ebp, eax
sub ebp, edx
xor esi, esi
lea esp, [esp]
cmp ebp, dword [esi*8 + 0x4872e8]
jne 0x46e3ef
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x74]
push ebp
push edx
push eax
call fcn.004153c8
add esp, 0xc
test eax, eax
je 0x46e42f
mov ecx, dword [esi*8 + 0x4872e8]
mov edx, dword [esp + 0x50]
inc esi
cmp esi, 7
lea eax, [edx + ecx + 1]
mov dword [esp + 0x50], eax
jl 0x46e3cf
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x3c
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
cmp dword [esi*8 + 0x4872ec], 0x70
jne 0x46e45f
mov eax, dword [edi + 0x20]
mov dword [edi + 0x50], 1
test eax, eax
je 0x46e45f
mov byte [ebx], 0x71
mov cl, byte [eax + 5]
inc ebx
mov byte [ebx], cl
mov dl, byte [eax + 4]
mov byte [ebx + 1], dl
mov eax, dword [eax]
add ebx, 2
test eax, eax
jne 0x46e447
mov al, byte [esi*8 + 0x4872ec]
mov byte [ebx], al
inc ebx
cmp esi, 7
jge 0x46e408
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
xor esi, esi
jmp 0x46c4e4
cmp dl, 0x3f
jne 0x46ecd6
mov cl, byte [eax + 1]
inc eax
movzx edx, cl
add edx, 0xffffffdf
mov dword [esp + 0x10], eax
cmp edx, 0x5b
ja case.0x46e4ac.34
movzx edx, byte [edx + 0x46fd8b]
jmp dword [edx*4 + 0x46fd4f]
mov cl, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
test cl, cl
je 0x46e4d0
cmp cl, 0x29
je 0x46e4f7
mov cl, byte [eax + 1]
inc eax
mov dword [esp + 0x10], eax
test cl, cl
jne 0x46e4bf
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x12
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
cmp byte [eax], 0
je 0x46e4d0
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
xor esi, esi
jmp 0x46c4e4
mov dword [esp + 0x50], 1
inc eax
mov dword [esp + 0x20], 0x5e
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
jmp 0x46e87a
cmp byte [eax + 1], 0x3f
mov dword [esp + 0x20], 0x60
jne 0x46e561
mov cl, byte [eax + 2]
cmp cl, 0x3d
je 0x46f06a
cmp cl, 0x21
je 0x46f06a
cmp cl, 0x3c
je 0x46f06a
mov byte [ebx + 3], 0x64
mov cl, byte [eax + 1]
or esi, 0xffffffff
mov dword [esp + 0x38], 3
mov dword [esp + 0x3c], esi
cmp cl, 0x52
jne 0x46e58f
cmp byte [eax + 2], 0x26
jne 0x46e58f
mov dword [esp + 0x24], esi
add eax, 2
mov byte [ebx + 3], 0x66
jmp 0x46e5ca
cmp cl, 0x3c
jne 0x46e5a0
mov esi, 0x3e
mov dword [esp + 0x24], esi
inc eax
jmp 0x46e5ca
cmp cl, 0x27
jne 0x46e5b1
mov esi, 0x27
mov dword [esp + 0x24], esi
inc eax
jmp 0x46e5ca
xor esi, esi
mov dword [esp + 0x24], esi
cmp cl, 0x2d
je 0x46e5c1
cmp cl, 0x2b
jne 0x46e5ca
movzx ecx, byte [eax + 1]
inc eax
mov dword [esp + 0x3c], ecx
movzx edx, byte [eax + 1]
mov ebp, dword [edi + 0xc]
inc eax
test byte [edx + ebp], 0x10
je 0x46f893
movzx edx, byte [eax]
xor ecx, ecx
test byte [edx + ebp], 0x10
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
je 0x46e617
test ecx, ecx
jl 0x46e608
test byte [edx + 0x487da0], 4
je 0x46e605
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2 - 0x30]
jmp 0x46e608
or ecx, 0xffffffff
movzx edx, byte [eax + 1]
inc eax
test byte [edx + ebp], 0x10
jne 0x46e5ef
mov dword [esp + 0x14], ecx
mov ebp, eax
sub ebp, dword [esp + 0x18]
test esi, esi
jle 0x46e62f
movzx edx, byte [eax]
inc eax
cmp edx, dword [esp + 0x24]
jne 0x46f8b6
mov dl, byte [eax]
inc eax
mov dword [esp + 0x10], eax
cmp dl, 0x29
jne 0x46f8b6
cmp dword [esp + 0x110], 0
jne 0x46f06a
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x46e698
test ecx, ecx
jle 0x46f8da
cmp eax, 0x2d
jne 0x46e66c
mov eax, dword [edi + 0x34]
sub eax, ecx
inc eax
mov ecx, eax
jmp 0x46e66f
add ecx, dword [edi + 0x34]
test ecx, ecx
jle 0x46f1c7
cmp ecx, dword [edi + 0x38]
jg 0x46f1c7
mov edx, ecx
sar edx, 8
mov byte [ebx + 4], dl
mov edx, dword [esp + 0x20]
mov byte [ebx + 5], cl
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov esi, dword [edi + 0x28]
xor eax, eax
cmp dword [edi + 0x2c], eax
mov dword [esp + 0x1c], eax
jle 0x46e6cd
mov ecx, dword [esp + 0x18]
push ebp
lea eax, [esi + 2]
push eax
push ecx
call fcn.004153c8
add esp, 0xc
test eax, eax
je 0x46e6cd
mov eax, dword [esp + 0x1c]
add esi, dword [edi + 0x30]
inc eax
cmp eax, dword [edi + 0x2c]
mov dword [esp + 0x1c], eax
jl 0x46e6a6
mov edx, dword [esp + 0x1c]
cmp edx, dword [edi + 0x2c]
jge 0x46e6fd
movzx eax, byte [esi]
movzx ecx, byte [esi + 1]
shl eax, 8
or eax, ecx
mov edx, eax
sar edx, 8
inc byte [ebx + 3]
mov byte [ebx + 4], dl
mov edx, dword [esp + 0x20]
mov byte [ebx + 5], al
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov esi, dword [esp + 0x18]
xor eax, eax
cmp dword [esp + 0x40], eax
setne al
push eax
push ebp
push esi
push edi
call fcn.0044329a
add esp, 0x10
test eax, eax
jle 0x46e735
mov edx, dword [esp + 0x20]
mov ecx, eax
sar ecx, 8
inc byte [ebx + 3]
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
mov dword [esp + 0x18], ebx
jmp 0x46e87a
cmp dword [esp + 0x24], 0
jne 0x46f901
cmp byte [esi], 0x52
jne 0x46e791
xor eax, eax
lea ecx, [eax + 1]
cmp ebp, ecx
jle 0x46e770
nop
movzx edx, byte [ecx + esi]
test byte [edx + 0x487da0], 4
je 0x46f928
inc ecx
cmp ecx, ebp
lea eax, [eax + eax*4]
lea eax, [edx + eax*2 - 0x30]
jl 0x46e74f
test eax, eax
jne 0x46e775
mov eax, 0xffff
mov edx, dword [esp + 0x20]
mov ecx, eax
sar ecx, 8
mov byte [ebx + 3], 0x66
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
mov dword [esp + 0x18], ebx
jmp 0x46e87a
cmp ebp, 6
jne 0x46e7c2
push ebp
push str.DEFINE
push esi
call fcn.004153c8
add esp, 0xc
test eax, eax
jne 0x46e7c2
mov edx, dword [esp + 0x20]
mov byte [ebx + 3], 0x68
mov dword [esp + 0x38], 1
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x46f94f
cmp eax, dword [edi + 0x38]
jg 0x46f94f
mov edx, eax
sar edx, 8
mov byte [ebx + 4], dl
mov edx, dword [esp + 0x20]
mov byte [ebx + 5], al
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov edx, 0x58
inc eax
jmp 0x46e86a
inc eax
cmp byte [eax], 0x29
mov dword [esp + 0x10], eax
jne 0x46e824
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov byte [ebx], 0x6f
inc ebx
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov edx, 0x59
jmp 0x46e86e
mov dl, byte [eax + 1]
cmp dl, 0x21
je 0x46e862
cmp dl, 0x3d
je 0x46e85b
mov esi, dword [edi + 0xc]
movzx edx, dl
test byte [edx + esi], 0x10
je 0x46f97c
cmp cl, 0x3c
jne 0x46eada
mov edx, 0x3e
jmp 0x46eadf
mov edx, 0x5a
jmp 0x46e867
mov edx, 0x5b
add eax, 2
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x110]
mov byte [ebx], dl
mov ecx, dword [edi + 0x4c]
mov dword [esp + 0x74], ecx
xor ecx, ecx
neg eax
sbb eax, eax
lea esi, [esp + 0x68]
and eax, esi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x68], ecx
cmp edx, 0x5a
je 0x46e8aa
cmp dword [esp + 0x20], 0x5b
jne 0x46e8af
mov ecx, 1
mov edx, dword [esp + 0x108]
push eax
push edi
push edx
lea eax, [esp + 0xa4]
push eax
mov eax, dword [esp + 0x48]
lea edx, [esp + 0xb8]
push edx
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x114]
push edx
push ecx
push eax
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x7c]
lea edx, [esp + 0x64]
push edx
and eax, 7
push eax
push ecx
call fcn.00453209
add esp, 0x34
test eax, eax
je 0x46fbfa
mov edx, dword [esp + 0x20]
cmp edx, 0x60
jne 0x46e94c
cmp dword [esp + 0x110], 0
jne 0x46e94c
mov eax, ebx
xor ecx, ecx
jmp 0x46e91f
movzx esi, byte [eax + 1]
movzx ebp, byte [eax + 2]
shl esi, 8
or esi, ebp
add eax, esi
inc ecx
cmp byte [eax], 0x55
jne 0x46e91f
cmp byte [ebx + 3], 0x68
jne 0x46f077
cmp ecx, 1
jg 0x46fab5
mov edx, 0x68
mov ecx, dword [esp + 0xa8]
mov esi, dword [esp + 0x98]
mov eax, dword [esp + 0x10]
cmp byte [eax], 0x29
jne 0x46fb03
mov eax, dword [esp + 0x110]
xor ebp, ebp
cmp eax, ebp
je 0x46f0a1
mov ecx, dword [eax]
mov edx, dword [esp + 0x68]
mov esi, 0x7fffffeb
sub esi, ecx
lea ebp, [edx - 6]
cmp esi, ebp
jl 0x46f81e
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
lea ecx, [ecx + edx - 6]
mov dword [eax], ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov byte [ebx], 0x5e
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
add ebx, 2
mov byte [ebx], 0x55
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
add ebx, 2
xor esi, esi
jmp 0x46c4e4
mov dword [esp + 0x20], 0x5d
mov edx, dword [esp + 0x20]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
jmp 0x46e87a
inc eax
mov byte [ebx], 0x53
movzx ebp, byte [eax]
mov dword [esp + 0x5c], ebx
inc ebx
xor ecx, ecx
test byte [ebp + 0x487da0], 4
mov dword [esp + 0xb4], 1
mov dword [esp + 0x10], eax
je 0x46ea27
lea ebx, [ebx]
lea ecx, [ecx + ecx*4]
inc eax
lea ecx, [ebp + ecx*2 - 0x30]
movzx ebp, byte [eax]
test byte [ebp + 0x487da0], 4
jne 0x46ea0f
mov dword [esp + 0x10], eax
cmp byte [eax], 0x29
jne 0x46f9a0
cmp ecx, 0xff
jg 0x46f9c7
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov byte [ebx], cl
mov ecx, dword [esp + 0x2c]
mov edx, eax
sub edx, dword [edi + 0x18]
inc ebx
inc edx
sar edx, 8
mov byte [ebx], dl
sub al, byte [edi + 0x18]
mov byte [ebx + 2], 0
inc al
mov byte [ebx + 1], al
mov eax, dword [esp + 0x10]
mov byte [ebx + 3], 0
add ebx, 4
mov dword [esp + 0x18], 0
xor esi, esi
jmp 0x46c4e4
mov cl, byte [eax + 1]
inc eax
cmp cl, 0x3d
je 0x46eac8
cmp cl, 0x3e
je 0x46eab6
cmp cl, 0x3c
je 0x46e851
mov edx, dword [esp + 0xfc]
pop edi
pop esi
mov dword [edx], 0x29
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], eax
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov dword [esp + 0x24], 1
mov edx, 0x29
jmp 0x46f258
mov dword [esp + 0x24], 0
mov edx, 0x29
jmp 0x46f258
mov edx, 0x27
movzx ecx, byte [eax + 1]
mov esi, dword [edi + 0xc]
inc eax
test byte [ecx + esi], 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], eax
je 0x46eb0e
mov ecx, esi
jmp 0x46eaff
movzx esi, byte [eax + 1]
inc eax
test byte [esi + ecx], 0x10
jne 0x46eaff
mov dword [esp + 0x10], eax
mov esi, eax
sub esi, dword [esp + 0x18]
xor ecx, ecx
cmp dword [esp + 0x110], ecx
je 0x46eb76
movzx ecx, byte [eax]
cmp ecx, edx
jne 0x46f9ee
cmp dword [edi + 0x2c], 0x2710
jge 0x46fa15
lea ecx, [esi + 3]
cmp ecx, dword [edi + 0x30]
jle 0x46ec82
cmp esi, 0x20
mov dword [edi + 0x30], ecx
jle 0x46ec82
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x30
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
cmp dword [edi + 0x2c], ecx
mov ebp, dword [edi + 0x28]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x1c], ecx
jle 0x46ec17
jmp 0x46eb8f
mov eax, dword [esp + 0x18]
push esi
lea edx, [ebp + 2]
push edx
push eax
call fcn.00412ef3
add esp, 0xc
test eax, eax
jne 0x46ebda
cmp byte [esi + ebp + 2], al
jne 0x46ebf5
movzx edx, byte [ebp]
movzx eax, byte [ebp + 1]
shl edx, 8
or edx, eax
mov eax, dword [edi + 0x34]
mov ecx, 1
add eax, ecx
cmp edx, eax
je 0x46ebd4
test dword [esp + 0x2c], 0x80000
je 0x46fa3c
mov dword [esp + 0x40], ecx
jmp 0x46ebe1
jl 0x46ebf5
mov ecx, 1
mov eax, dword [esp + 0x1c]
add ebp, dword [edi + 0x30]
add eax, ecx
cmp eax, dword [edi + 0x2c]
mov dword [esp + 0x1c], eax
jl 0x46eb8f
jmp 0x46ec10
mov ecx, dword [edi + 0x2c]
mov eax, dword [edi + 0x30]
sub ecx, dword [esp + 0x1c]
lea edx, [eax + ebp]
imul ecx, eax
push ecx
push ebp
push edx
call fcn.00415f40
add esp, 0xc
cmp dword [esp + 0x40], 0
jne 0x46ec55
mov eax, dword [edi + 0x28]
xor ecx, ecx
cmp dword [edi + 0x2c], ecx
mov dword [esp + 0x1c], ecx
jle 0x46ec55
cmp eax, ebp
je 0x46ec47
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
shl edx, 8
or ecx, edx
mov edx, dword [edi + 0x34]
inc edx
cmp ecx, edx
je 0x46fa63
mov ecx, dword [esp + 0x1c]
jmp 0x46ec48
dec ecx
add eax, dword [edi + 0x30]
inc ecx
cmp ecx, dword [edi + 0x2c]
mov dword [esp + 0x1c], ecx
jl 0x46ec25
mov eax, dword [edi + 0x34]
mov edx, dword [esp + 0x18]
inc eax
sar eax, 8
mov byte [ebp], al
mov cl, byte [edi + 0x34]
push esi
push edx
lea eax, [ebp + 2]
inc cl
push eax
mov byte [ebp + 1], cl
call fcn.00412300
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov byte [esi + ebp + 2], 0
inc dword [edi + 0x2c]
inc eax
mov dword [esp + 0x10], eax
inc dword [edi + 0x34]
mov ecx, dword [edi + 0x34]
sar ecx, 8
mov byte [ebx + 3], cl
mov dl, byte [edi + 0x34]
mov byte [ebx + 4], dl
mov edx, dword [esp + 0x20]
mov dword [esp + 0x38], 2
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov edx, 0x29
mov dword [esp + 0x24], 1
jmp 0x46f258
inc eax
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x10]
mov edx, 0x29
jmp 0x46eeb5
test ecx, 0x1000
je 0x46ec8a
mov dword [esp + 0x20], 0x5e
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], ebx
jmp 0x46e87a
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov edx, dword [edi + 0x34]
mov esi, dword [esp + 0xfc]
push 0
push ecx
push edx
mov dword [esp + 0xac], eax
lea eax, [esp + 0x1c]
push esi
push eax
call fcn.00434c49
add esp, 0x14
cmp dword [esi], 0
jne 0x46fbfa
xor ebp, ebp
cmp eax, ebp
jge 0x46f52b
mov ecx, eax
neg ecx
cmp ecx, 0x1a
jne 0x46ed87
mov eax, dword [esp + 0x10]
cmp byte [eax + 1], 0x5c
jne 0x46ed68
cmp byte [eax + 2], 0x45
jne 0x46ed68
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
add eax, 2
mov dword [esp + 0x10], eax
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x46c4e4
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x58], 1
xor esi, esi
jmp 0x46c4e4
cmp ecx, 0x19
je 0x46f5a7
mov edx, dword [esp + 0x34]
cmp edx, 0xfffffffe
jne 0x46edaa
cmp ecx, 5
jle 0x46edaa
cmp ecx, 0x17
jge 0x46edaa
or edx, 0xffffffff
mov dword [esp + 0x34], edx
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x60], edx
cmp ecx, 0x1b
jne 0x46f20b
mov eax, dword [edi + 0x24]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x10]
inc eax
mov cl, byte [eax + 1]
xor edx, edx
cmp byte [eax], 0x3c
mov dword [esp + 0x38], ebp
setne dl
mov dword [esp + 0x50], ebp
lea ebp, [eax + 1]
mov dword [esp + 0x10], eax
dec edx
and edx, 0x17
add edx, 0x27
cmp cl, 0x2b
je 0x46ee6a
cmp cl, 0x2d
je 0x46ee6a
mov esi, ebp
mov al, byte [esi]
mov dword [esp + 0x3c], 1
test al, al
je 0x46ee2b
movzx eax, al
cmp eax, edx
je 0x46ee2b
mov ecx, dword [edi + 0xc]
mov al, byte [eax + ecx]
test al, 4
jne 0x46ee1f
mov dword [esp + 0x3c], 0
test al, 0x10
je 0x46ee2b
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x46ee06
movzx eax, byte [esi]
cmp eax, edx
je 0x46ee56
mov ecx, dword [esp + 0xfc]
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [ecx], 0x39
mov ecx, dword [esp + 0x2c]
xor esi, esi
jmp 0x46c4e4
cmp dword [esp + 0x3c], 0
jne 0x46eeb1
mov dword [esp + 0x24], 1
jmp 0x46f254
movzx ecx, byte [eax + 2]
add eax, 2
test byte [ecx + 0x487da0], 4
je 0x46ee8d
jmp 0x46ee7f
movzx ecx, byte [eax + 1]
inc eax
test byte [ecx + 0x487da0], 4
jne 0x46ee7f
movzx eax, byte [eax]
cmp eax, edx
je 0x46eeb1
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esi], 0x39
xor esi, esi
jmp 0x46c4e4
mov dword [esp + 0x10], ebp
mov cl, byte [ebp]
movzx esi, cl
cmp esi, 0x2b
jne 0x46eef9
movzx eax, byte [ebp + 1]
inc ebp
test byte [eax + 0x487da0], 4
mov dword [esp + 0x10], ebp
jne 0x46f16b
mov edx, dword [esp + 0xfc]
pop edi
mov dword [edx], 0x3f
mov edx, dword [esp + 0xf4]
pop esi
mov dword [edx], ebp
pop ebp
xor eax, eax
pop ebx
add esp, 0xdc
ret
cmp esi, 0x2d
jne 0x46f16b
movzx eax, byte [ebp + 1]
test byte [eax + 0x487da0], 4
jne 0x46f162
xor ebp, ebp
xor edx, edx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edx
lea eax, [esp + 0x40]
cmp cl, 0x29
je 0x46ef98
lea edx, [ebp + 1]
lea esp, [esp]
cmp cl, 0x3a
je 0x46ef90
add dword [esp + 0x10], edx
movzx ecx, cl
sub ecx, 0x2d
cmp ecx, 0x4b
ja case.0x46ef4e.46
movzx ecx, byte [ecx + 0x46fe0b]
jmp dword [ecx*4 + 0x46fde7]
lea eax, [esp + 0x3c]
jmp 0x46ef85
or dword [eax], 0x80000
or dword [edi + 0x48], 0x10
jmp 0x46ef85
or dword [eax], edx
jmp 0x46ef85
or dword [eax], 2
jmp 0x46ef85
or dword [eax], 4
jmp 0x46ef85
or dword [eax], 8
jmp 0x46ef85
or dword [eax], 0x200
jmp 0x46ef85
or dword [eax], 0x40
mov ecx, dword [esp + 0x10]
mov cl, byte [ecx]
cmp cl, 0x29
jne 0x46ef2f
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
or edx, esi
not ebp
and edx, ebp
cmp byte [eax], 0x29
mov dword [esp + 0x54], edx
jne 0x46f05e
mov ecx, dword [edi + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x46effa
mov eax, dword [esp + 0x110]
test eax, eax
je 0x46efcd
cmp dword [eax], 6
jne 0x46effa
mov eax, dword [esp + 0xf0]
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [edi + 0x44], edx
mov dword [eax], edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], 0
mov ecx, edx
xor esi, esi
jmp 0x46c4e4
mov eax, edx
xor eax, esi
test al, 7
je 0x46f00e
mov byte [ebx], 0x19
mov cl, dl
inc ebx
and cl, 7
mov byte [ebx], cl
inc ebx
inc dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov eax, edx
shr eax, 9
and eax, 1
mov dword [esp + 0xc0], eax
xor eax, 1
mov dword [esp + 0xc8], eax
movsx eax, dl
and eax, 1
shl eax, 8
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xf0]
mov dword [eax], edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], 0
mov ecx, edx
xor esi, esi
jmp 0x46c4e4
inc dword [esp + 0x10]
mov dword [esp + 0x20], 0x5e
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], ebx
jmp 0x46e87a
cmp ecx, 2
jg 0x46fadc
cmp ecx, 1
jne 0x46e94c
or esi, 0xffffffff
or ecx, esi
mov dword [esp + 0x98], esi
mov dword [esp + 0xa8], ecx
jmp 0x46e95a
mov ebx, dword [esp + 0x3c]
cmp edx, 0x68
je 0x46f5a7
cmp edx, 0x5d
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x44], eax
mov dword [esp + 0xa4], ebp
jl 0x46f136
cmp eax, 0xfffffffe
jne 0x46f0fe
cmp ecx, ebp
jl 0x46f0ec
mov dword [esp + 0x34], ecx
mov dword [esp + 0xa4], 1
mov dword [esp + 0x44], 0xffffffff
jmp 0x46f113
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x44], 0xffffffff
jmp 0x46f113
cmp ecx, ebp
jl 0x46f113
cmp esi, ebp
jge 0x46f11b
or ecx, dword [esp + 0x74]
mov esi, ecx
mov dword [esp + 0x98], esi
cmp esi, ebp
jl 0x46f5a7
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x4c], esi
xor esi, esi
jmp 0x46c4e4
cmp edx, 0x58
jne 0x46f5a7
cmp esi, ebp
jl 0x46f5a7
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x4c], esi
xor esi, esi
jmp 0x46c4e4
mov ebp, dword [esp + 0x10]
inc ebp
mov dword [esp + 0x10], ebp
movzx ecx, byte [ebp]
xor eax, eax
test byte [ecx + 0x487da0], 4
mov dword [esp + 0x14], eax
je 0x46f19c
nop
lea eax, [eax + eax*4]
inc ebp
lea eax, [ecx + eax*2 - 0x30]
movzx ecx, byte [ebp]
test byte [ecx + 0x487da0], 4
jne 0x46f17f
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], eax
movzx ecx, byte [ebp]
cmp ecx, edx
jne 0x46fb2a
cmp esi, 0x2d
jne 0x46f1ee
test eax, eax
je 0x46f8da
mov edx, dword [edi + 0x34]
sub edx, eax
inc edx
mov dword [esp + 0x14], edx
test edx, edx
jg 0x46f347
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0xf
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
cmp esi, 0x2b
jne 0x46f347
test eax, eax
je 0x46fb51
add eax, dword [edi + 0x34]
mov dword [esp + 0x14], eax
jmp 0x46f347
mov esi, dword [esp + 0x10]
cmp ecx, 0x1c
jne 0x46f474
mov dl, byte [esi + 1]
cmp dl, 0x3c
je 0x46f22e
cmp dl, 0x27
je 0x46f22e
cmp dl, 0x7b
jne 0x46f474
lea eax, [esi + 1]
mov dword [esp + 0x10], eax
mov al, byte [eax]
mov dword [esp + 0x24], ebp
cmp al, 0x3c
jne 0x46f246
mov edx, 0x3e
jmp 0x46f254
xor edx, edx
cmp al, 0x27
setne dl
dec edx
and edx, 0xffffffaa
add edx, 0x7d
mov eax, dword [esp + 0x10]
movzx esi, byte [eax + 1]
mov ebp, dword [edi + 0xc]
inc eax
test byte [esi + ebp], 0x10
mov ecx, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
je 0x46f281
mov esi, ebp
movzx ebp, byte [eax + 1]
inc eax
test byte [esi + ebp], 0x10
jne 0x46f272
mov dword [esp + 0x10], eax
mov ebp, eax
sub ebp, ecx
cmp dword [esp + 0x110], 0
je 0x46f2b8
test ebp, ebp
je 0x46fb78
movzx eax, byte [eax]
cmp eax, edx
jne 0x46fb9f
cmp ebp, 0x20
jg 0x46eb4f
mov dword [esp + 0x14], 0
jmp 0x46f33c
cmp dword [edi + 0x2c], 0
mov esi, dword [edi + 0x28]
mov dword [esp + 0x1c], 0
jle 0x46f2fc
lea ebx, [ebx]
mov edx, dword [esp + 0x18]
push ebp
lea ecx, [esi + 2]
push ecx
push edx
call fcn.004153c8
add esp, 0xc
test eax, eax
jne 0x46f2eb
cmp byte [esi + ebp + 2], al
je 0x46f2fc
mov eax, dword [esp + 0x1c]
add esi, dword [edi + 0x30]
inc eax
cmp eax, dword [edi + 0x2c]
mov dword [esp + 0x1c], eax
jl 0x46f2cf
mov eax, dword [esp + 0x1c]
cmp eax, dword [edi + 0x2c]
jge 0x46f317
movzx eax, byte [esi]
movzx ecx, byte [esi + 1]
shl eax, 8
or eax, ecx
mov dword [esp + 0x14], eax
jmp 0x46f33c
mov edx, dword [esp + 0x18]
xor eax, eax
cmp dword [esp + 0x40], eax
setne al
push eax
push ebp
push edx
push edi
call fcn.0044329a
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
jle 0x46f928
cmp dword [esp + 0x24], 0
je 0x46f484
cmp dword [esp + 0x110], 0
mov eax, dword [edi + 0x14]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x38], eax
jne 0x46f40e
cmp dword [esp + 0x14], 0
mov byte [ebx], 0
je 0x46f384
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov edx, dword [edi + 0x14]
push eax
push ecx
push edx
call fcn.004342bf
add esp, 0xc
mov dword [esp + 0x38], eax
test eax, eax
jne 0x46f3d8
cmp dword [esp + 0x40], eax
setne al
push eax
mov eax, dword [esp + 0x18]
push eax
push 0
push edi
call fcn.0044329a
add esp, 0x10
test eax, eax
jl 0x46f1c7
mov eax, dword [edi + 0x14]
mov ecx, dword [esp + 0x14]
add ecx, eax
mov edx, ebx
sub edx, eax
mov eax, dword [edi + 0x24]
add edx, 4
mov dword [esp + 0x38], ecx
sar edx, 8
mov byte [eax], dl
mov edx, dword [edi + 0x24]
mov cl, bl
sub cl, byte [edi + 0x14]
add cl, 4
mov byte [edx + 1], cl
add dword [edi + 0x24], 2
jmp 0x46f40a
movzx ecx, byte [eax + 1]
movzx edx, byte [eax + 2]
shl ecx, 8
or ecx, edx
jne 0x46f40e
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x38]
push eax
push ecx
push ebx
push edx
call fcn.0044a32a
add esp, 0x10
test eax, eax
jne 0x46fbc6
mov eax, dword [esp + 0x38]
mov byte [ebx], 0x5d
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
mov byte [ebx], 0x52
mov ecx, eax
sub ecx, dword [edi + 0x14]
add ebx, 3
sar ecx, 8
mov byte [ebx - 2], cl
sub al, byte [edi + 0x14]
add ebx, 3
cmp dword [esp + 0x34], 0xfffffffe
mov byte [ebx - 4], al
mov byte [ebx - 3], 0x55
mov byte [ebx - 2], 0
mov byte [ebx - 1], 6
mov dword [esp + 0x68], 9
jne 0x46f5a7
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], 0xffffffff
xor esi, esi
jmp 0x46c4e4
cmp ecx, 0x1d
jl 0x46f4e2
mov ecx, 0xffffffe3
sub ecx, eax
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x34], 0xfffffffe
jne 0x46f493
mov dword [esp + 0x34], 0xffffffff
mov ecx, dword [esp + 0x14]
mov byte [ebx], 0x51
mov dword [esp + 0x18], ebx
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], cl
add ebx, 2
cmp ecx, 0x20
mov eax, 1
jge 0x46f4b8
shl eax, cl
or dword [edi + 0x40], eax
cmp ecx, dword [edi + 0x3c]
jle 0x46f5a7
mov eax, dword [esp + 0x14]
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
mov dword [edi + 0x3c], eax
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x46c4e4
cmp ecx, 0x16
je 0x46fbed
cmp ecx, 0xf
je 0x46fbed
cmp ecx, 0x10
je 0x46fbed
cmp ecx, 5
jle 0x46f50b
cmp ecx, 0x17
mov dword [esp + 0x18], ebx
jl 0x46f50f
mov dword [esp + 0x18], ebp
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
neg al
mov byte [ebx], al
mov eax, dword [esp + 0x10]
inc ebx
xor esi, esi
jmp 0x46c4e4
cmp dword [esp + 0x30], ebp
je 0x46f552
cmp eax, 0x7f
jle 0x46f552
lea ecx, [esp + 0xac]
push ecx
push eax
call fcn.00433da0
mov ecx, dword [esp + 0x34]
add esp, 8
mov ebp, eax
jmp 0x46c93e
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0xac], al
mov ebp, 1
jmp 0x46c93e
movzx eax, cl
or eax, dword [esp + 0x70]
mov dword [esp + 0x34], eax
cmp ebp, 1
je 0x46f5a7
movzx eax, byte [ebx - 1]
or eax, dword [edi + 0x4c]
jmp 0x46f5a3
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x60], eax
cmp ebp, 1
je 0x46f598
cmp dword [esp + 0x70], 0
jne 0x46f5a7
movzx eax, byte [ebx - 1]
or eax, dword [edi + 0x4c]
or eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
xor esi, esi
jmp 0x46c4e4
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x34
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x14
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x34
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x34]
mov dword [ecx], edx
mov ecx, dword [esp + 0x104]
mov edx, dword [esp + 0x4c]
mov dword [ecx], edx
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0xf8]
mov dword [ecx], ebx
mov ecx, dword [esp + 0x110]
mov dword [edx], eax
test ecx, ecx
je 0x46fc1a
mov eax, dword [ecx]
mov edx, dword [esp + 0x9c]
mov esi, ebx
mov edi, 0x7fffffeb
sub esi, edx
sub edi, eax
cmp edi, esi
jge 0x46fc14
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x14
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x40
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xfc]
xor eax, eax
cmp byte [edx + 1], 0x3a
pop edi
setne al
pop esi
pop ebp
pop ebx
dec eax
and eax, 0xffffffee
add eax, 0x1f
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 0xe8]
mov dword [edx], ecx
xor eax, eax
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x1f
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x1e
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 7
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 8
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 6
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 9
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x37
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x14
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x3b
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x3c
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
pop ebp
mov dword [edx], eax
mov dword [ecx], 0x1c
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
pop edi
pop esi
dec eax
mov dword [edx], 0x1a
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], eax
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x3a
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0xf
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0xf
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
neg eax
sbb eax, eax
and eax, 0xffffffec
pop edi
add eax, 0x23
pop esi
mov dword [ecx], eax
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
pop edi
pop esi
inc eax
mov dword [edx], 0x18
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], eax
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x27
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x26
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x2a
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x31
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x2b
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x41
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
sub dword [esp + 0x10], edx
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0xc
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x36
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x1b
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0xe
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x1d
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x3a
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [eax], 0x3e
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
mov dword [ecx], 0x2a
mov ecx, dword [esp + 8]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov edx, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
mov dword [edx], 0x28
mov edx, dword [esp + 0xf0]
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
mov eax, dword [esp + 0xfc]
mov dword [eax], 0x2d
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
pop edi
pop esi
pop ebp
mov dword [edx], ecx
xor eax, eax
pop ebx
add esp, 0xdc
ret
sub eax, edx
add eax, ebx
mov dword [ecx], eax
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xdc
ret