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

Disassembly:
sub esp, 0xe8
mov eax, dword [esp + 0xec]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xf0]
mov edx, dword [esp + 0x10c]
push ebx
mov ebx, dword [eax]
mov eax, dword [esp + 0xf8]
push ebp
push esi
mov esi, dword [eax]
mov eax, dword [esp + 0x2c]
shr eax, 9
and eax, 1
mov dword [esp + 0xac], eax
xor eax, 1
mov dword [esp + 0xb4], eax
mov eax, 0xfffffffe
xor ecx, ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
and eax, 1
push edi
xor ebp, ebp
mov edi, ebx
shl eax, 8
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0xd4], edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x9c], eax
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x1c], eax
cmp eax, ecx
jne 0x4779bb
mov eax, dword [esp + 0x68]
cmp eax, ecx
je 0x4779bb
mov esi, eax
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x120], ecx
je 0x477a72
mov ecx, dword [edx + 0x10]
add ecx, 0xf9c
cmp ebx, ecx
ja 0x47afeb
mov eax, dword [esp + 0x94]
cmp ebx, eax
jae 0x4779ea
mov dword [esp + 0x14], eax
mov ebx, eax
mov edx, dword [esp + 0x120]
mov eax, dword [edx]
mov ecx, ebx
sub ecx, dword [esp + 0x94]
mov edx, 0x7fffffeb
sub edx, eax
cmp edx, ecx
jl 0x47b00e
sub eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x120]
add eax, ebx
mov dword [ecx], eax
xor ecx, ecx
cmp ebp, ecx
je 0x477a5c
cmp ebp, edi
jbe 0x477a62
mov edx, ebx
sub edx, ebp
push edx
push ebp
push edi
call fcn.00488c10
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x128]
mov eax, edi
sub eax, ebp
add ebx, eax
add esp, 0xc
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], edi
mov ebp, edi
xor ecx, ecx
mov dword [esp + 0x94], ebx
jmp 0x477a83
mov dword [esp + 0x14], edi
mov ebx, edi
mov edx, dword [esp + 0x11c]
mov dword [esp + 0x94], ebx
jmp 0x477a83
mov eax, dword [edx + 0x10]
add eax, 0xf9c
cmp dword [edx + 0x24], eax
ja 0x47b031
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x50], ecx
je 0x477c11
cmp eax, ecx
je 0x477c11
cmp eax, 0x5c
jne 0x477ac4
cmp word [esi + 2], 0x45
jne 0x477ac4
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
mov dword [esp + 0x50], ecx
add esi, 2
xor ecx, ecx
jmp 0x477993
mov eax, dword [esp + 0x58]
cmp eax, ecx
je 0x477b0b
cmp dword [esp + 0x120], ecx
jne 0x477b07
movzx edi, byte [eax + 6]
movzx eax, byte [eax + 7]
shl edi, 8
or edi, eax
mov eax, esi
sub eax, dword [edx + 0x18]
mov esi, dword [esp + 0x58]
sar eax, 1
sub eax, edi
mov edx, eax
sar edx, 8
mov byte [esi + 8], dl
mov edx, esi
mov byte [edx + 9], al
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x11c]
mov dword [esp + 0x58], ecx
test dword [esp + 0x30], 0x4000
je case.0x477dac.1
mov byte [ebx], 0x70
lea eax, [ebx + 1]
mov byte [eax], 0xff
mov dword [eax + 1], ecx
mov ecx, esi
sub ecx, dword [edx + 0x18]
mov dword [esp + 0x58], ebx
sar ecx, 9
mov byte [eax + 5], cl
mov ecx, esi
sub ecx, dword [edx + 0x18]
mov word [eax + 7], 0
sar ecx, 1
mov byte [eax + 6], cl
mov esi, dword [esp + 0x10]
add eax, 9
mov dword [esp + 0x14], eax
mov ebx, eax
mov ecx, dword [esp + 0x1c]
add ecx, 0xffff2800
cmp ecx, 0x3ff
ja 0x477b94
movzx eax, word [esi + 2]
add esi, 2
mov edx, 0xdc00
cmp ax, dx
jb 0x477b94
mov ecx, 0xdfff
cmp ax, cx
ja 0x477b94
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x10], esi
movzx eax, word [esi]
add edx, 0xffff2809
shl edx, 0xa
add edx, eax
mov dword [esp + 0x1c], edx
test byte [esp + 0x30], 1
mov ebp, dword [esp + 0x1c]
setne cl
add cl, 0x1d
mov dword [esp + 0x18], ebx
mov byte [ebx], cl
mov edx, ebp
xor eax, eax
lea ecx, [ecx]
cmp ebp, dword [eax*4 + 0x4b4624]
jle 0x477bbf
inc eax
cmp eax, 6
jl 0x477bb0
lea edi, [eax + ebx + 1]
mov ecx, edi
mov esi, eax
test eax, eax
jle 0x477be3
jmp 0x477bd0
mov bl, dl
and bl, 0x3f
or bl, 0x80
mov byte [ecx], bl
dec esi
dec ecx
sar edx, 6
test esi, esi
jg 0x477bd0
mov al, byte [eax*4 + 0x4b4640]
or al, dl
inc edi
mov byte [ecx], al
mov dword [esp + 0x14], edi
cmp ebp, 0xd
je 0x477c01
cmp ebp, 0xa
jne 0x47af2b
mov ecx, dword [esp + 0x11c]
or dword [ecx + 0x4c], 0x20
jmp 0x47af32
cmp eax, 0x2a
je 0x477db3
cmp eax, 0x2b
je 0x477db3
cmp eax, 0x3f
je 0x477db3
cmp eax, 0x7b
jne 0x477c41
lea eax, [esi + 2]
call fcn.004751f0
test eax, eax
jne 0x477db3
mov edi, dword [esp + 0x58]
xor ecx, ecx
mov dword [esp + 0x20], ecx
cmp edi, ecx
je 0x477c9d
mov eax, dword [esp + 0xa4]
mov edx, eax
dec eax
mov dword [esp + 0xa4], eax
test edx, edx
jg 0x477c9d
cmp dword [esp + 0x120], ecx
jne 0x477c99
movzx edx, byte [edi + 6]
movzx eax, byte [edi + 7]
shl edx, 8
or edx, eax
mov eax, esi
mov esi, dword [esp + 0x11c]
sub eax, dword [esi + 0x18]
sar eax, 1
sub eax, edx
mov edx, eax
sar edx, 8
mov byte [edi + 8], dl
mov byte [edi + 9], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
mov edx, dword [esp + 0x30]
test dl, 8
je 0x477d44
mov eax, dword [esp + 0x1c]
cmp eax, 0x7f
jg 0x477cc7
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx + 0xc]
test byte [eax + ecx], 1
jne 0x4785eb
cmp eax, 0x23
jne 0x477d44
add esi, 2
mov dword [esp + 0x10], esi
movzx edx, word [esi]
test dx, dx
je 0x477d38
jmp 0x477ce0
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 0x5c]
test ecx, ecx
je 0x477dc0
mov eax, dword [eax + 0x1c]
cmp esi, eax
jae 0x477dfd
mov edi, dword [esp + 0x11c]
push 1
push ecx
add edi, 0x60
mov ecx, esi
call fcn.00487740
add esp, 8
test eax, eax
je 0x477dfd
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 0x60]
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x10], esi
cmp word [esi], 0
jne 0x4785eb
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], 0
test edx, 0x4000
je 0x477d96
cmp dword [esp + 0x20], 0
jne 0x477d96
mov edi, dword [esp + 0x11c]
mov byte [ebx], 0x70
lea eax, [ebx + 1]
mov byte [eax], 0xff
mov dword [eax + 1], 0
mov ecx, esi
sub ecx, dword [edi + 0x18]
mov dword [esp + 0x58], ebx
sar ecx, 9
mov byte [eax + 5], cl
mov ecx, esi
sub ecx, dword [edi + 0x18]
mov word [eax + 7], 0
sar ecx, 1
mov byte [eax + 6], cl
mov esi, dword [esp + 0x10]
add eax, 9
mov dword [esp + 0x14], eax
mov ebx, eax
cmp dword [esp + 0x1c], 0x7c
ja case.0x477dac.1
mov eax, dword [esp + 0x1c]
movzx ecx, byte [eax + 0x47b548]
jmp dword [ecx*4 + 0x47b514]
mov dword [esp + 0x20], 1
jmp 0x477c9d
mov ecx, dword [eax + 0x60]
mov eax, dword [eax + 0x1c]
lea edi, [ecx + ecx]
sub eax, edi
cmp esi, eax
ja 0x477dfd
mov eax, dword [esp + 0x11c]
movzx eax, byte [eax + 0x64]
cmp dx, ax
jne 0x477dfd
cmp ecx, 1
je 0x477d1c
mov ecx, dword [esp + 0x11c]
movzx edx, byte [ecx + 0x65]
cmp word [esi + 2], dx
je 0x477d1c
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov ecx, 0xdc00
cmp ax, cx
jb 0x477e3a
mov edx, 0xdfff
cmp ax, dx
ja 0x477e3a
movzx eax, word [esi - 2]
mov ecx, 0xd800
cmp ax, cx
jb 0x477e3a
mov edx, 0xdbff
cmp ax, dx
ja 0x477e3a
add esi, 2
mov dword [esp + 0x10], esi
movzx edx, word [esi]
test dx, dx
jne 0x477ce0
jmp 0x477d38
mov dword [esp + 0x18], 0
test dl, 2
je 0x477e74
cmp dword [esp + 0x34], 0xfffffffe
jne 0x477e67
mov dword [esp + 0x34], 0xffffffff
mov byte [ebx], 0x1a
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x4785e3
mov byte [ebx], 0x19
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x4785e3
test dl, 2
setne dl
add dl, 0x1b
mov byte [ebx], dl
inc ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
jmp 0x4785e3
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x477eae
or eax, 0xffffffff
mov dword [esp + 0x34], eax
shr edx, 2
and dl, 1
or dl, 0xc
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x18], ebx
mov byte [ebx], dl
inc ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x14], ebx
jmp 0x4785e3
mov ecx, dword [esp + 0x11c]
test dword [ecx + 0x48], 0x2000000
je case.0x477dac.1
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x40
xor eax, eax
pop ebx
add esp, 0xe8
ret
movzx eax, word [esi + 2]
mov dword [esp + 0x18], ebx
cmp eax, 0x3a
je 0x477f21
cmp eax, 0x2e
je 0x477f21
cmp eax, 0x3d
jne 0x477f3b
lea edx, [esp + 0x64]
push edx
push esi
call fcn.00476820
mov esi, dword [esp + 0x18]
add esp, 8
test eax, eax
jne 0x47b0dc
xor ebp, ebp
mov dword [esp + 0x4c], ebp
add esi, 2
mov dword [esp + 0x10], esi
movzx edi, word [esi]
cmp edi, 0x5c
jne 0x477f76
add esi, 2
cmp word [esi], 0x45
je 0x477f41
push 3
push 0x4b8714
push esi
call fcn.00489c92
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x477fc8
add esi, 6
jmp 0x477f41
test ebp, ebp
jne 0x477f84
cmp edi, 0x5e
jne 0x477f84
lea ebp, [edi - 0x5d]
jmp 0x477f3d
cmp edi, 0x5d
jne 0x477fc8
mov eax, dword [esp + 0x11c]
test dword [eax + 0x48], 0x2000000
je 0x477fc8
mov ecx, ebp
neg ecx
sbb cl, cl
and cl, 0x77
add cl, 0x96
mov byte [ebx], cl
inc ebx
cmp dword [esp + 0x34], 0xfffffffe
mov dword [esp + 0x14], ebx
jne 0x477fbb
mov dword [esp + 0x34], 0xffffffff
mov edx, dword [esp + 0x34]
mov dword [esp + 0x4c], edx
jmp 0x4785e3
xor eax, eax
lea ebp, [ebx + 4]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x54], ebp
cmp edi, eax
je 0x47b180
lea esp, [esp]
cmp edi, 0x7f
jle 0x478059
movzx edi, word [esi]
lea eax, [edi - 0xd800]
cmp eax, 0x3ff
ja 0x478059
movzx eax, word [esi + 2]
lea ecx, [eax - 0xdc00]
cmp ecx, 0x3ff
ja 0x478059
add edi, 0xffff2809
shl edi, 0xa
add edi, eax
add esi, 2
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x120]
test eax, eax
je 0x47806e
mov edx, ebp
mov ebp, dword [esp + 0x54]
sub edx, ebp
add dword [eax], edx
mov edx, dword [esp + 0x50]
test edx, edx
je 0x47809a
cmp edi, 0x5c
jne 0x4782a5
cmp word [esi + 2], 0x45
jne 0x4782a5
mov dword [esp + 0x50], 0
add esi, 2
jmp 0x47852c
cmp edi, 0x5b
jne 0x478255
movzx eax, word [esi + 2]
cmp eax, 0x3a
je 0x4780ba
cmp eax, 0x2e
je 0x4780ba
cmp eax, 0x3d
jne 0x4782a5
lea eax, [esp + 0x64]
push eax
push esi
call fcn.00476820
add esp, 8
test eax, eax
je 0x47829d
mov ecx, dword [esp + 0x11c]
mov esi, dword [esp + 0x10]
mov edx, dword [ecx + 8]
xor edi, edi
cmp word [esi + 2], 0x3a
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], edx
jne 0x47b10c
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], 0x5e
jne 0x478114
mov edi, 1
add esi, 2
mov dword [esp + 0x40], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], esi
mov ebx, dword [esp + 0x64]
sub ebx, esi
sar ebx, 1
push esi
call fcn.004768b0
add esp, 4
test eax, eax
js 0x47b12f
mov ecx, dword [esp + 0x30]
test cl, 1
je 0x47813d
cmp eax, 2
jg 0x47813d
xor eax, eax
test ecx, 0x20000000
je 0x47816e
mov ecx, edi
neg ecx
sbb ecx, ecx
and ecx, 0xe
add ecx, eax
mov esi, dword [ecx*4 + 0x4be2e8]
test esi, esi
je 0x47816e
mov eax, dword [esp + 0x64]
add eax, 2
mov dword [esp + 0x68], eax
add esi, 0xfffffffe
jmp 0x47852c
mov edx, dword [esp + 0x3c]
lea eax, [eax + eax*2]
mov esi, dword [eax*4 + 0x4b5860]
add esi, edx
mov ecx, 8
lea edi, [esp + 0xd8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax*4 + 0x4b5864]
mov esi, dword [eax*4 + 0x4b5868]
test ecx, ecx
js 0x4781d4
xor eax, eax
add ecx, edx
test esi, esi
js 0x4781c2
jmp 0x4781b0
mov dl, byte [ecx + eax]
or byte [esp + eax + 0xd8], dl
inc eax
cmp eax, 0x20
jl 0x4781b0
jmp 0x4781d4
mov dl, byte [ecx + eax]
not dl
and byte [esp + eax + 0xd8], dl
inc eax
cmp eax, 0x20
jl 0x4781c2
test esi, esi
jns 0x4781da
neg esi
cmp esi, 1
jne 0x4781e9
and byte [esp + 0xd9], 0xc3
jmp 0x4781f6
cmp esi, 2
jne 0x4781f6
and byte [esp + 0xe3], 0x7f
xor eax, eax
cmp dword [esp + 0x40], eax
je 0x478230
mov edi, edi
mov cl, byte [esp + eax + 0xd8]
not cl
or byte [esp + eax + 0x74], cl
inc eax
cmp eax, 0x20
jl 0x478200
mov esi, dword [esp + 0x64]
add esi, 2
mov dword [esp + 0x1c], 0xa
jmp 0x47852c
mov dl, byte [esp + eax + 0xd8]
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x478230
mov esi, dword [esp + 0x64]
add esi, 2
mov dword [esp + 0x1c], 0xa
jmp 0x47852c
cmp edi, 0x5c
jne 0x4782a5
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x11c]
mov edx, dword [ecx + 0x34]
mov ebx, dword [esp + 0x108]
push eax
push edx
lea eax, [esp + 0x18]
push ebx
push eax
lea ecx, [edi - 0x5b]
call fcn.00475290
add esp, 0x10
cmp dword [ebx], 0
mov edi, eax
jne 0x47b4fa
mov esi, edi
neg esi
cmp esi, 5
jne 0x478330
lea edi, [esi + 3]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov ebx, 0x5c
cmp word [esi + 2], bx
jne 0x478821
mov eax, 0x45
cmp word [esi + 4], ax
jne 0x4782ce
add esi, 4
xor edx, edx
mov dword [esp + 0x10], esi
cmp word [esi + 2], bx
je 0x4782b4
mov dword [esp + 0x50], edx
mov ecx, esi
mov dword [esp + 0x3c], ecx
cmp edi, 0xd
je 0x4782e2
cmp edi, 0xa
jne 0x4782f2
mov eax, dword [esp + 0x11c]
or dword [eax + 0x4c], 0x20
mov eax, 0x45
test edx, edx
jne 0x478b27
cmp word [esi + 2], 0x2d
jne 0x478b27
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
jne 0x478860
cmp word [esi + 2], ax
jne 0x47882b
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
je 0x478315
jmp 0x478860
cmp esi, 0x1a
jne 0x47835c
mov esi, dword [esp + 0x10]
cmp word [esi + 2], 0x5c
jne 0x47834f
cmp word [esi + 4], 0x45
jne 0x47834f
add esi, 4
jmp 0x47852c
mov dword [esp + 0x50], 1
jmp 0x47852c
cmp esi, 0x19
je 0x478528
test edi, edi
jns 0x47829d
mov ecx, dword [esp + 0x11c]
mov eax, dword [ecx + 8]
mov edx, 2
add dword [esp + 0x1c], edx
lea ecx, [esi - 6]
cmp ecx, 0x1c
ja case.0x478393.12
movzx ecx, byte [ecx + 0x47b5fc]
jmp dword [ecx*4 + 0x47b5c8]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x68], eax
lea ecx, [edi*4 + 0x74]
mov eax, 0x4be2d0
sub eax, ecx
mov esi, dword [eax]
sub esi, edx
sub dword [esp + 0x1c], edx
jmp 0x47852c
xor ecx, ecx
nop
mov dl, byte [eax + ecx + 0x40]
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x4783c0
jmp 0x478528
mov dword [esp + 0x24], 1
xor ecx, ecx
lea ecx, [ecx]
mov dl, byte [eax + ecx + 0x40]
not dl
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x4783e0
jmp 0x478528
xor ecx, ecx
jmp 0x478400
mov dl, byte [eax + ecx + 0xa0]
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x478400
jmp 0x478528
mov dword [esp + 0x24], 1
xor ecx, ecx
mov dl, byte [eax + ecx + 0xa0]
not dl
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x478420
jmp 0x478528
movzx ecx, byte [eax]
or byte [esp + 0x74], cl
movzx ecx, byte [eax + 1]
and cl, 0xf7
or byte [esp + 0x75], cl
mov ecx, edx
lea esp, [esp]
mov dl, byte [eax + ecx]
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x478450
jmp 0x478528
mov esi, eax
lea eax, [esp + 0x74]
xor edx, edx
mov dword [esp + 0x24], 1
sub esi, eax
lea ecx, [esp + edx + 0x74]
mov al, byte [ecx + esi]
not al
or byte [ecx], al
inc edx
cmp edx, 0x20
jl 0x478474
or byte [esp + 0x75], 8
jmp 0x478528
or byte [esp + 0x75], dl
or byte [esp + 0x78], 1
or byte [esp + 0x88], 1
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x1680
mov dword [esp + 0x28], 1
call fcn.00487920
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x180e
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2000
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x200a
call fcn.00487920
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x202f
call fcn.00487920
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x205f
call fcn.00487920
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x3000
call fcn.00487920
add ebp, eax
mov esi, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x10], esi
movzx edi, word [esi]
test edi, edi
jne 0x47855c
mov eax, dword [esp + 0x68]
test eax, eax
je 0x47b180
lea esi, [eax + 2]
mov dword [esp + 0x68], edi
mov dword [esp + 0x10], esi
movzx edi, word [esi]
test edi, edi
je 0x47b180
cmp edi, 0x5d
jne 0x478020
cmp dword [esp + 0x50], 0
jne 0x478020
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x4c]
cmp esi, 1
jne 0x478c84
cmp dword [esp + 0x28], 0
jne 0x478c84
mov ecx, dword [esp + 0x20]
test edx, edx
je 0x4785a0
cmp ecx, 0x80
jge 0x478c84
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
test edx, edx
je 0x478c77
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x4785c0
or eax, 0xffffffff
mov dword [esp + 0x34], eax
test byte [esp + 0x30], 1
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
setne dl
add dl, 0x1f
mov byte [eax], dl
mov byte [eax + 1], cl
add eax, 2
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477993
xor eax, eax
mov ecx, eax
dec ecx
mov edx, 0xff
je 0x478620
sub ecx, 3
je 0x478619
sub ecx, 0x10
jne 0x478625
mov edx, 0xfe
jmp 0x478625
mov edx, 0xfd
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x478605
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x100
mov dword [esp + 0x28], 1
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x167f
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x1681
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x180d
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x180f
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x1fff
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x200b
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x202e
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2030
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x205e
call fcn.00487920
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2060
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x2fff
call fcn.00487920
mov edx, 0x3001
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, SysReAllocString
jmp 0x478521
or byte [esp + 0x75], 0x3c
or byte [esp + 0x84], 0x20
mov byte [ebp], dl
inc ebp
mov eax, ebp
mov edx, 0x2028
mov dword [esp + 0x28], 1
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x2029
jmp 0x478521
xor eax, eax
mov ecx, eax
dec ecx
mov edx, 0xff
je 0x478767
sub ecx, 0xf
jne 0x47876c
mov edx, 0xdf
jmp 0x47876c
mov edx, 0xc3
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x478751
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x100
mov dword [esp + 0x28], 1
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, 0x2027
call fcn.00487920
mov edx, 0x2029
jmp 0x478700
push ebx
lea ecx, [esp + 0xcc]
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xd8]
call fcn.004756a0
add esp, 0xc
test eax, eax
js 0x47b4fa
xor ecx, ecx
cmp esi, 0x10
sete cl
mov dword [esp + 0x28], 1
cmp ecx, dword [esp + 0xcc]
sete dl
add dl, 3
mov byte [ebp], dl
mov byte [ebp + 1], al
mov al, byte [esp + 0xc8]
mov byte [ebp + 2], al
add ebp, 3
sub dword [esp + 0x1c], 2
jmp 0x478528
test byte [esp + 0x30], 0x40
mov esi, dword [esp + 0x10]
jne 0x47b141
sub dword [esp + 0x1c], edx
movzx edi, word [esi]
jmp 0x4782a1
mov eax, 0x45
jmp 0x4782d2
cmp word [esi], bx
jne 0x478860
cmp word [esi + 2], 0x51
jne 0x478860
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
jne 0x478857
cmp word [esi + 2], ax
jne 0x478857
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
je 0x478830
jmp 0x478860
mov edx, 1
mov dword [esp + 0x50], edx
movzx eax, word [esi]
test ax, ax
je 0x478b21
test edx, edx
jne 0x478879
cmp eax, 0x5d
je 0x478b21
mov ebx, eax
lea ecx, [ebx - 0xd800]
cmp ecx, 0x3ff
ja 0x4788ad
movzx eax, word [esi + 2]
lea edx, [eax - 0xdc00]
cmp edx, 0x3ff
ja 0x4788ad
add ebx, 0xffff2809
shl ebx, 0xa
add ebx, eax
add esi, 2
mov dword [esp + 0x10], esi
cmp dword [esp + 0x50], 0
jne 0x478902
cmp ebx, 0x5c
jne 0x478902
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x11c]
mov edx, dword [ecx + 0x34]
mov esi, dword [esp + 0x108]
push eax
push edx
lea eax, [esp + 0x18]
push esi
push eax
lea ecx, [ebx - 0x5b]
call fcn.00475290
add esp, 0x10
cmp dword [esi], 0
mov ebx, eax
jne 0x47b4fa
test ebx, ebx
jns 0x4788fe
cmp ebx, 0xfffffffb
jne 0x4789a8
mov ebx, 8
mov esi, dword [esp + 0x10]
cmp ebx, edi
jl 0x47b15d
je 0x478b27
cmp ebx, 0xd
je 0x47891a
cmp ebx, 0xa
jne 0x478925
mov eax, dword [esp + 0x11c]
or dword [eax + 0x4c], 0x20
cmp ebx, 0xff
jg 0x478947
mov eax, dword [esp + 0x30]
and eax, 1
mov dword [esp + 0x3c], eax
je 0x478aa5
cmp ebx, 0x7f
jle 0x478aa5
test byte [esp + 0x30], 1
mov dword [esp + 0x28], 1
je 0x478a17
lea ecx, [esp + 0xac]
push ecx
lea edx, [esp + 0xb8]
push edx
mov edx, ebx
lea esi, [esp + 0x48]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
call fcn.00476ac0
add esp, 8
test eax, eax
je 0x478a17
jmp 0x478990
mov edx, dword [esp + 0xb4]
mov esi, dword [esp + 0xac]
cmp edx, edi
jb 0x4789b1
cmp esi, ebx
jbe 0x4789ef
jmp 0x4789c0
mov esi, dword [esp + 0x3c]
jmp 0x478b23
lea eax, [edi - 1]
cmp esi, eax
jb 0x4789bc
mov edi, edx
jmp 0x4789ef
cmp esi, ebx
jbe 0x4789cb
lea ecx, [ebx + 1]
cmp edx, ecx
ja 0x4789cb
mov ebx, esi
jmp 0x4789ef
cmp edx, esi
jne 0x4789d6
mov byte [ebp], 1
inc ebp
jmp 0x4789e4
mov byte [ebp], 2
inc ebp
mov eax, ebp
call fcn.00487920
add ebp, eax
mov eax, ebp
mov edx, esi
call fcn.00487920
add ebp, eax
lea edx, [esp + 0xac]
push edx
mov edx, dword [esp + 0x40]
lea eax, [esp + 0xb8]
push eax
lea esi, [esp + 0x48]
call fcn.00476ac0
add esp, 8
test eax, eax
jne 0x478990
mov byte [ebp], 2
mov edx, edi
inc ebp
mov dword [esp + 0x40], edx
xor ecx, ecx
cmp edi, dword [ecx*4 + 0x4b4624]
jle 0x478a33
inc ecx
cmp ecx, 6
jl 0x478a24
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478a59
lea ecx, [ecx]
and dl, 0x3f
or dl, 0x80
mov byte [eax], dl
mov edx, dword [esp + 0x40]
sar edx, 6
dec esi
dec eax
mov dword [esp + 0x40], edx
test esi, esi
jg 0x478a40
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
mov byte [eax], cl
xor ecx, ecx
cmp ebx, dword [ecx*4 + 0x4b4624]
jle 0x478a75
inc ecx
cmp ecx, 6
jl 0x478a66
lea ebp, [ecx + ebp + 1]
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478a94
mov dl, bl
and dl, 0x3f
or dl, 0x80
mov byte [eax], dl
dec esi
dec eax
sar ebx, 6
test esi, esi
jg 0x478a81
mov cl, byte [ecx*4 + 0x4b4640]
or cl, bl
mov byte [eax], cl
inc ebp
jmp 0x478528
mov eax, dword [esp + 0x1c]
mov edx, ebx
sub edx, edi
cmp dword [esp + 0x120], 0
lea ecx, [eax + edx + 1]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ebx
jne 0x47852c
cmp edi, ebx
jg 0x47852c
nop
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x74]
or byte [eax], dl
cmp dword [esp + 0x3c], 0
je 0x478b17
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 4]
movzx ecx, byte [ecx + edi]
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 + 0x74]
or byte [eax], dl
inc edi
cmp edi, ebx
jle 0x478ad0
jmp 0x47852c
mov esi, ecx
mov dword [esp + 0x10], esi
cmp edi, 0xff
jg 0x478b45
mov ebx, dword [esp + 0x30]
and ebx, 1
je 0x478c24
cmp edi, 0x7f
jle 0x478c24
mov byte [ebp], 1
inc ebp
mov dword [esp + 0x28], 1
mov edx, edi
xor ecx, ecx
cmp edi, dword [ecx*4 + 0x4b4624]
jle 0x478b65
inc ecx
cmp ecx, 6
jl 0x478b56
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478b83
nop
mov bl, dl
and bl, 0x3f
or bl, 0x80
mov byte [eax], bl
dec esi
dec eax
sar edx, 6
test esi, esi
jg 0x478b70
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
inc ebp
test byte [esp + 0x30], 1
mov byte [eax], cl
je 0x478528
mov eax, edi
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx edx, byte [eax + 0x4a6a88]
mov eax, edi
shl edx, 7
and eax, 0x8000007f
jns 0x478bbd
dec eax
or eax, 0xffffff80
inc eax
add edx, eax
movzx ecx, word [edx*2 + 0x4a8c88]
mov edx, dword [ecx*8 + 0x4a59ac]
add edx, edi
cmp edx, edi
je 0x478528
mov byte [ebp], 1
inc ebp
xor ecx, ecx
nop
cmp edx, dword [ecx*4 + 0x4b4624]
jle 0x478bef
inc ecx
cmp ecx, 6
jl 0x478be0
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478c13
lea esp, [esp]
mov bl, dl
and bl, 0x3f
or bl, 0x80
mov byte [eax], bl
dec esi
dec eax
sar edx, 6
test esi, esi
jg 0x478c00
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
mov byte [eax], cl
inc ebp
jmp 0x478528
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x74]
or byte [eax], dl
test ebx, ebx
je 0x478c6a
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 4]
movzx edi, byte [ecx + edi]
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea eax, [esp + eax + 0x74]
or byte [eax], dl
inc dword [esp + 0x1c]
mov dword [esp + 0x20], edi
jmp 0x47852c
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
jmp 0x477b94
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x478c94
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
je 0x478d29
cmp dword [esp + 0x24], 0
je 0x478cbc
test dword [esp + 0x30], 0x20000000
je 0x478d29
mov ecx, dword [esp + 0x14]
mov byte [ebp], 0
add ecx, 3
mov byte [ecx - 3], 0x6c
inc ebp
test edx, edx
setne al
mov dword [esp + 0x14], ecx
mov byte [ecx], al
test esi, esi
jle 0x478d0b
mov edi, ecx
or al, 2
mov byte [edi], al
inc edi
mov ecx, ebp
sub ecx, edi
push ecx
lea edx, [edi + 0x20]
push edi
push edx
call fcn.00488c10
mov ecx, 8
lea esi, [esp + 0x80]
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp + 0x20]
add esp, 0xc
mov dword [esp + 0x14], ecx
jmp 0x478d11
mov dword [esp + 0x14], ebp
mov ecx, ebp
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, eax
sar edx, 8
sub cl, al
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jmp 0x4785df
cmp edx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
setne cl
add cl, 0x6a
mov byte [eax], cl
inc eax
test edx, edx
je 0x478d68
cmp dword [esp + 0x120], 0
jne 0x478d75
lea esi, [esp + 0x74]
mov ecx, eax
sub esi, eax
mov edi, 0x20
mov dl, byte [esi + ecx]
not dl
mov byte [ecx], dl
inc ecx
dec edi
jne 0x478d55
add eax, 0x20
jmp 0x4785db
mov ecx, 8
lea esi, [esp + 0x74]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
add eax, 0x20
jmp 0x4785db
cmp dword [esp + 0x20], 0
je case.0x477dac.1
mov edi, dword [esp + 0x108]
push edi
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x50]
push ecx
lea eax, [esi + 2]
call fcn.004757c0
add esp, 0xc
cmp dword [edi], 0
mov esi, eax
mov dword [esp + 0x10], esi
jne 0x47b4fe
mov eax, dword [esp + 0x48]
jmp 0x478de1
mov dword [esp + 0x2c], 0xffffffff
jmp 0x478ddb
mov eax, 1
mov dword [esp + 0x2c], 0xffffffff
jmp 0x478ddd
mov dword [esp + 0x2c], 1
xor eax, eax
mov dword [esp + 0x48], eax
test ebp, ebp
je 0x47b1a3
test eax, eax
jne 0x478dfd
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x34], edx
mov dword [esp + 0x44], ecx
sub eax, dword [esp + 0x2c]
mov edx, ebp
neg eax
sbb eax, eax
and eax, 0x200
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edx
movzx eax, word [esi + 2]
mov dword [esp + 0x28], 0
cmp eax, 0x2b
jne 0x478e38
xor ebx, ebx
add esi, 2
mov dword [esp + 0x28], 1
mov dword [esp + 0x10], esi
jmp 0x478e54
cmp eax, 0x3f
jne 0x478e4d
mov ebx, dword [esp + 0xb8]
add esi, 2
mov dword [esp + 0x10], esi
jmp 0x478e54
mov ebx, dword [esp + 0xb0]
cmp byte [ebp], 0x6f
mov dword [esp + 0x1c], ebx
jne 0x478ee0
push 3
lea edx, [ebp + 3]
push ebp
push edx
call fcn.00488c10
add dword [esp + 0x20], 6
add esp, 0xc
cmp dword [esp + 0x120], 0
mov word [ebp], 0x7b
mov byte [ebp + 2], 6
mov word [ebp + 6], 0x72
mov byte [ebp + 8], 6
mov dword [esp + 0x6c], 9
jne 0x478ed8
mov edi, dword [esp + 0x11c]
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x24]
add eax, 2
cmp esi, eax
jb 0x478ed8
movzx ecx, byte [esi - 2]
movzx eax, byte [esi - 1]
mov edx, ebp
sub edx, dword [edi + 0x14]
shl ecx, 8
or eax, ecx
inc edx
cmp eax, edx
jne 0x478ed8
lea ecx, [eax + 3]
sar ecx, 8
mov byte [esi - 2], cl
mov edx, dword [edi + 0x24]
add al, 3
mov byte [edx - 1], al
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov cl, byte [ebp]
cmp cl, 0x1d
je 0x479521
cmp cl, 0x1e
je 0x479521
cmp cl, 0x1f
je 0x4794f2
cmp cl, 0x20
je 0x4794f2
cmp cl, 0x17
jae 0x478f8d
movzx ecx, cl
mov eax, 0x34
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
cmp dword [esp + 0x28], 0
mov ecx, dword [esp + 0x2c]
jne 0x478f63
test ecx, ecx
jns 0x478f63
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x30]
push edx
push eax
add esi, 2
push esi
push ebp
call fcn.00476d00
add esp, 0x10
test eax, eax
je 0x478f57
xor ebx, ebx
mov dword [esp + 0x28], 1
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov dl, byte [ebp]
cmp dl, 0x10
je 0x4795b5
cmp dl, 0xf
je 0x4795b5
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
jmp 0x4795c5
cmp cl, 0x6a
je 0x479456
cmp cl, 0x6b
je 0x479456
cmp cl, 0x6c
je 0x479456
cmp cl, 0x6d
je 0x479456
cmp cl, 0x6e
je 0x479456
cmp cl, 0x77
jb 0x47942a
cmp cl, 0x80
ja 0x47942a
mov ebx, dword [esp + 0x14]
xor eax, eax
sub ebx, ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], eax
cmp cl, 0x80
jne 0x478feb
cmp byte [ebp + 3], 0x8a
je 0x47994c
cmp cl, 0x7b
jae 0x479012
cmp dword [esp + 0x48], eax
jg 0x47994c
mov eax, dword [esp + 0x2c]
test eax, eax
js 0x479007
cmp eax, 1
jle 0x479016
mov eax, 1
mov dword [esp + 0x2c], eax
jmp 0x479016
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x4790d8
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x11c]
push edx
mov byte [ecx], 0
push edi
cmp eax, 1
jg 0x47908d
push 1
push ebp
call fcn.00476900
push ebx
lea esi, [ebp + 1]
push ebp
push esi
call fcn.00488c10
inc dword [esp + 0x30]
add esp, 0x1c
cmp dword [esp + 0x2c], 0
jne 0x479065
mov byte [ebp], 0x9a
jmp 0x479948
mov al, byte [esp + 0x1c]
sub al, 0x75
dec dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov byte [ebp], al
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x18], esi
mov ebp, esi
mov esi, dword [esp + 0x10]
jmp 0x479148
push 4
push ebp
call fcn.00476900
push ebx
lea eax, [ebp + 4]
push ebp
push eax
call fcn.00488c10
mov cl, byte [esp + 0x38]
add dword [esp + 0x30], 4
sub cl, 0x75
mov byte [ebp], cl
mov byte [ebp + 1], 0x7c
add ebp, 2
mov word [ebp], 0
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x40], ebp
add esp, 0x1c
add ebp, 2
dec dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
jmp 0x479148
cmp ecx, 1
jle 0x479131
mov edi, dword [esp + 0x120]
test edi, edi
je 0x4791b1
mov eax, dword [esp + 0x48]
dec eax
mov dword [esp + 0x54], eax
imul eax, dword [esp + 0x6c]
fild dword [esp + 0x54]
fimul dword [esp + 0x6c]
mov ecx, eax
fcomp qword [0x4b8988]
fnstsw ax
test ah, 0x41
je 0x47b0a3
mov eax, dword [edi]
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, ecx
jl 0x47b0a3
add eax, ecx
mov ecx, dword [esp + 0x120]
mov dword [ecx], eax
mov edi, dword [esp + 0x11c]
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jle 0x47914a
sub ecx, dword [esp + 0x48]
mov dword [esp + 0x2c], ecx
test ecx, ecx
js 0x479392
cmp dword [esp + 0x120], 0
je 0x479247
test ecx, ecx
jle 0x479247
mov eax, dword [esp + 0x6c]
add eax, 7
mov dword [esp + 0x54], eax
imul ecx, eax
fild dword [esp + 0x54]
fimul dword [esp + 0x2c]
add ecx, 0xfffffffa
fcomp qword [0x4b8988]
fnstsw ax
test ah, 0x41
je 0x47b00e
mov edi, dword [esp + 0x120]
mov eax, dword [edi]
mov ebx, 0x7fffffeb
sub ebx, eax
cmp ebx, ecx
jl 0x47b00e
add eax, ecx
mov dword [edi], eax
jmp 0x479339
cmp dword [esp + 0xa0], 0
je 0x4791ca
cmp dword [esp + 0x44], 0
jge 0x4791ca
mov eax, dword [esp + 0x34]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x48], 1
mov edi, dword [esp + 0x11c]
jle 0x479138
mov ecx, dword [esp + 0x48]
dec ecx
mov dword [esp + 0x40], ecx
mov edx, dword [esp + 0x14]
mov esi, dword [edi + 0x24]
push ebx
push ebp
push edx
call fcn.00490240
mov eax, dword [esp + 0x68]
add esp, 0xc
cmp eax, esi
jae 0x47922c
nop
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [edi + 0x24]
add ecx, ebx
sar ecx, 8
mov byte [edx], cl
mov cl, byte [eax + 1]
mov edx, dword [edi + 0x24]
add cl, bl
mov byte [edx + 1], cl
add dword [edi + 0x24], 2
add eax, 2
cmp eax, esi
jb 0x479200
add dword [esp + 0x14], ebx
dec dword [esp + 0x40]
mov dword [esp + 0x5c], esi
jne 0x4791e5
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
jmp 0x479138
dec ecx
mov dword [esp + 0x20], ecx
js 0x479339
mov al, byte [esp + 0x1c]
sub al, 0x75
mov byte [esp + 0x73], al
lea esp, [esp]
mov eax, dword [esp + 0x14]
mov esi, dword [edi + 0x24]
mov cl, byte [esp + 0x73]
mov byte [eax], cl
inc eax
cmp dword [esp + 0x20], 0
mov dword [esp + 0x40], esi
mov dword [esp + 0x14], eax
je 0x4792a6
mov edx, dword [esp + 0x24]
mov byte [eax], 0x7c
inc eax
test edx, edx
jne 0x47928d
xor ecx, ecx
jmp 0x479291
mov ecx, eax
sub ecx, edx
mov edx, ecx
sar edx, 8
mov dword [esp + 0x24], eax
mov byte [eax], dl
mov byte [eax + 1], cl
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
push ebx
push ebp
push eax
call fcn.00490240
mov eax, dword [esp + 0x68]
add esp, 0xc
cmp eax, esi
jae 0x47931f
mov ecx, dword [esp + 0x20]
mov esi, ecx
neg esi
sbb esi, esi
and esi, 3
inc esi
neg ecx
sbb cl, cl
and cl, 3
inc cl
mov byte [esp + 0x72], cl
jmp 0x4792e0
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [edi + 0x24]
mov edi, dword [esp + 0x11c]
add ecx, esi
add ecx, ebx
sar ecx, 8
mov byte [edx], cl
mov cl, byte [eax + 1]
add cl, byte [esp + 0x72]
mov edx, dword [edi + 0x24]
add cl, bl
mov byte [edx + 1], cl
add dword [edi + 0x24], 2
add eax, 2
cmp eax, dword [esp + 0x40]
jb 0x4792e0
mov esi, dword [esp + 0x40]
add dword [esp + 0x14], ebx
dec dword [esp + 0x20]
mov dword [esp + 0x5c], esi
jns 0x479260
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
test edi, edi
je 0x4797c8
mov ecx, dword [esp + 0x14]
lea esp, [esp]
mov eax, ecx
sub eax, edi
inc eax
mov esi, ecx
sub esi, eax
movzx edx, byte [esi + 1]
movzx ebx, byte [esi + 2]
shl edx, 8
or edx, ebx
jne 0x47936c
xor edi, edi
jmp 0x47936e
sub edi, edx
mov byte [ecx], 0x72
mov edx, eax
sar edx, 8
mov byte [ecx + 1], dl
mov byte [ecx + 2], al
add ecx, 3
mov byte [esi + 1], dl
mov byte [esi + 2], al
test edi, edi
jne 0x479350
mov dword [esp + 0x14], ecx
jmp 0x4797c0
mov esi, dword [esp + 0x14]
movzx eax, byte [esi - 2]
movzx ecx, byte [esi - 1]
add esi, 0xfffffffd
shl eax, 8
or eax, ecx
mov ebx, esi
sub ebx, eax
cmp byte [ebx], 0x7b
jne 0x4793b9
cmp dword [esp + 0x28], 0
je 0x4793d2
mov byte [ebx], 0x7c
cmp dword [esp + 0x28], 0
je 0x4793df
inc byte [ebx]
mov eax, dword [esp + 0x20]
mov byte [esi], 0x75
test eax, eax
je 0x4793e7
mov byte [eax], 0x8d
jmp 0x4793e7
mov al, byte [esp + 0x1c]
add al, 0x73
mov byte [esi], al
jmp 0x479948
mov al, byte [esp + 0x1c]
add al, 0x73
mov byte [esi], al
cmp dword [esp + 0x120], 0
jne 0x479948
mov ebp, ebx
push edi
push 1
push esi
push ebp
call fcn.00476210
add esp, 0x10
test eax, eax
jne 0x479422
movzx edx, byte [ebp + 1]
movzx eax, byte [ebp + 2]
shl edx, 8
or edx, eax
add ebp, edx
cmp byte [ebp], 0x71
je 0x4793f7
jmp 0x479948
add byte [ebx], 5
jmp 0x479948
cmp cl, 0x96
je 0x47994c
mov edx, dword [esp + 0x108]
mov dword [edx], 0xb
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x479467
mov dword [esp + 0x14], ebp
jmp 0x47994c
mov edx, dword [esp + 0x48]
test edx, edx
jne 0x479487
cmp ecx, 0xffffffff
jne 0x4794a4
mov eax, dword [esp + 0x14]
add bl, 0x62
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x4797c0
cmp edx, 1
jne 0x4794bc
cmp ecx, 0xffffffff
jne 0x4794bc
mov eax, dword [esp + 0x14]
add bl, 0x64
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x4797c0
cmp ecx, 1
jne 0x4794bc
mov eax, dword [esp + 0x14]
add bl, 0x66
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x4797c0
mov eax, dword [esp + 0x14]
add bl, 0x68
mov byte [eax], bl
mov ebx, edx
sar ebx, 8
mov byte [eax + 1], bl
mov byte [eax + 2], dl
cmp ecx, 0xffffffff
jne 0x4794db
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov edx, ecx
sar edx, 8
mov byte [eax + 3], dl
mov byte [eax + 4], cl
add eax, 5
mov dword [esp + 0x14], eax
jmp 0x4797c0
xor eax, eax
cmp cl, 0x1f
movzx ecx, byte [ebp + 1]
setne al
mov dword [esp + 0x1c], ecx
dec eax
and eax, 0xfffffff3
add eax, 0x27
cmp dword [esp + 0x28], 0
mov dword [esp + 0x18], eax
jne 0x478f5f
mov ecx, dword [esp + 0x2c]
jmp 0x478f2b
mov edi, dword [esp + 0x14]
xor eax, eax
cmp cl, 0x1d
mov cl, byte [edi - 1]
sete al
dec eax
and eax, 0xd
mov dword [esp + 0x18], eax
test cl, cl
jns 0x479587
mov dl, byte [edi - 1]
lea ecx, [edi - 1]
and dl, 0xc0
cmp dl, 0x80
jne 0x47955a
lea ebx, [ebx]
mov al, byte [ecx - 1]
dec ecx
and al, 0xc0
cmp al, 0x80
je 0x479550
mov eax, dword [esp + 0x14]
sub eax, ecx
push eax
push ecx
lea ecx, [esp + 0xc4]
push ecx
mov dword [esp + 0x28], eax
call fcn.00490240
mov eax, dword [esp + 0x24]
add esp, 0xc
or dword [esp + 0x1c], 0x80
jmp 0x478f20
cmp dword [esp + 0x48], 1
movzx edx, cl
mov dword [esp + 0x1c], edx
jle 0x478f20
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx + 0x50]
or ecx, edx
or ecx, dword [esp + 0x9c]
mov dword [esp + 0x44], ecx
jmp 0x478f20
movzx edx, byte [ebp + 1]
mov dword [esp + 0x24], edx
movzx edx, byte [ebp + 2]
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
test ecx, ecx
je 0x47994c
add ebx, eax
cmp dword [esp + 0x48], 0
jne 0x479625
cmp ecx, 0xffffffff
jne 0x4795f3
add bl, 0x21
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x479777
cmp ecx, 1
jne 0x479608
add bl, 0x25
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x479777
add bl, 0x27
mov eax, ecx
mov byte [ebp], bl
sar eax, 8
mov byte [ebp + 1], al
mov byte [ebp + 2], cl
add ebp, 3
mov dword [esp + 0x14], ebp
jmp 0x479777
cmp dword [esp + 0x48], 1
jne 0x47966f
cmp ecx, 0xffffffff
jne 0x479641
add bl, 0x23
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x479777
mov dword [esp + 0x14], edi
cmp ecx, 1
je 0x47994c
lea edx, [ecx - 1]
add bl, 0x27
lea eax, [edi + 1]
sar edx, 8
dec cl
mov byte [edi], bl
mov byte [eax], dl
mov byte [eax + 1], cl
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x479777
add al, 0x29
mov byte [ebp], al
mov eax, dword [esp + 0x48]
mov edx, eax
sar edx, 8
mov byte [ebp + 1], dl
mov byte [ebp + 2], al
add ebp, 3
mov dword [esp + 0x14], ebp
test ecx, ecx
jns 0x4796eb
mov eax, dword [esp + 0x1c]
cmp eax, 0x80
jl 0x4796c2
mov esi, eax
and esi, 7
push esi
lea eax, [esp + 0xc0]
push eax
push ebp
call fcn.00490240
add ebp, esi
add bl, 0x21
add esp, 0xc
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x479777
mov byte [ebp], al
mov eax, dword [esp + 0x24]
inc ebp
test eax, eax
js 0x4796db
mov cl, byte [esp + 0x20]
mov byte [ebp], al
mov byte [ebp + 1], cl
add ebp, 2
add bl, 0x21
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x479777
cmp ecx, eax
je 0x479777
cmp dword [esp + 0x1c], 0x80
mov esi, dword [esp + 0x14]
jl 0x479726
mov edi, dword [esp + 0x1c]
and edi, 7
push edi
lea edx, [esp + 0xc0]
push edx
push esi
call fcn.00490240
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x38]
add esp, 0xc
add esi, edi
jmp 0x479734
mov dl, byte [esp + 0x1c]
inc dword [esp + 0x14]
mov byte [esi], dl
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x24], 0
jl 0x47974d
movzx edx, byte [esp + 0x24]
mov byte [esi], dl
movzx edx, byte [esp + 0x20]
mov byte [esi + 1], dl
add esi, 2
sub ecx, eax
mov dword [esp + 0x2c], ecx
cmp ecx, 1
jne 0x479760
add bl, 0x25
mov byte [esi], bl
inc esi
jmp 0x479773
add bl, 0x27
mov eax, ecx
mov byte [esi], bl
sar eax, 8
mov byte [esi + 1], al
mov byte [esi + 2], cl
add esi, 3
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
cmp eax, 0x80
jl 0x4797a1
mov esi, eax
and esi, 7
push esi
lea ecx, [esp + 0xc0]
push ecx
push edi
call fcn.00490240
add esp, 0xc
add edi, esi
jmp 0x4797a4
mov byte [edi], al
inc edi
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], edi
test eax, eax
js 0x4797c0
mov dl, byte [esp + 0x20]
mov byte [edi], al
mov byte [edi + 1], dl
add edi, 2
mov dword [esp + 0x14], edi
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x28], 0
je 0x47994c
mov al, byte [edx]
cmp al, 0x5d
jne 0x4797f7
mov al, byte [edx + 3]
cmp al, 0x10
je 0x4797ec
cmp al, 0xf
je 0x4797ec
xor eax, eax
lea edx, [edx + eax + 4]
jmp 0x479825
mov eax, 2
lea edx, [edx + eax + 4]
jmp 0x479825
cmp al, 0x29
je 0x4797ff
cmp al, 0x43
jne 0x479829
movzx eax, al
movzx ecx, byte [eax + 0x4b4588]
add edx, ecx
mov dword [esp + 0x38], edx
mov al, byte [edx - 1]
cmp al, 0xc0
jb 0x479829
movzx eax, al
and eax, 0x3f
movzx ecx, byte [eax + 0x4b4670]
add edx, ecx
mov dword [esp + 0x38], edx
mov ebx, dword [esp + 0x14]
sub ebx, edx
test ebx, ebx
jle 0x47994c
movzx eax, byte [edx]
add eax, 0xffffffdf
cmp eax, 0x3a
ja case.0x47984d.34
movzx eax, byte [eax + 0x47b670]
jmp dword [eax*4 + 0x47b61c]
mov byte [edx], 0x2a
jmp 0x479948
mov byte [edx], 0x2b
jmp 0x479948
mov byte [edx], 0x2c
jmp 0x479948
mov byte [edx], 0x2d
jmp 0x479948
mov byte [edx], 0x37
jmp 0x479948
mov byte [edx], 0x38
jmp 0x479948
mov byte [edx], 0x39
jmp 0x479948
mov byte [edx], 0x3a
jmp 0x479948
mov byte [edx], 0x44
jmp 0x479948
mov byte [edx], 0x45
jmp 0x479948
mov byte [edx], 0x46
jmp 0x479948
mov byte [edx], 0x47
jmp 0x479948
mov byte [edx], 0x51
jmp 0x479948
mov byte [edx], 0x52
jmp 0x479948
mov byte [edx], 0x53
jmp 0x479948
mov byte [edx], 0x54
jmp 0x479948
mov byte [edx], 0x5e
jmp 0x479948
mov byte [edx], 0x5f
jmp 0x479948
mov byte [edx], 0x60
jmp 0x479948
mov byte [edx], 0x61
jmp 0x479948
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x11c]
mov esi, dword [esp + 0x14]
push ecx
push edx
mov byte [esi], 0
mov eax, dword [esp + 0x40]
push 3
push eax
call fcn.00476900
mov eax, dword [esp + 0x48]
push ebx
push eax
add eax, 3
push eax
call fcn.00488c10
mov ecx, dword [esp + 0x54]
add ebx, 3
mov byte [ecx], 0x7b
mov byte [esi + 3], 0x72
mov eax, ebx
sar eax, 8
mov byte [esi + 4], al
mov byte [esi + 5], bl
mov edx, dword [esp + 0x54]
mov byte [edx + 1], al
mov eax, dword [esp + 0x54]
add esp, 0x1c
add esi, 6
mov dword [esp + 0x14], esi
mov byte [eax + 2], bl
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x3c]
or dword [eax + 0x50], ecx
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477993
mov edi, dword [esp + 0x11c]
mov ecx, dword [edi + 0x24]
xor eax, eax
add esi, 2
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x54], edx
mov dword [esp + 0x1c], 0x7e
mov dword [esp + 0x5c], ecx
cmp eax, 0x2a
jne 0x479bc0
lea ecx, [esi + 2]
mov dword [esp + 0x24], ecx
movzx ecx, word [ecx]
cmp ecx, 0x7f
ja 0x4799d7
mov edx, ecx
mov ecx, dword [edi + 0xc]
test byte [edx + ecx], 2
jne 0x4799e5
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
cmp word [ecx], 0x3a
jne 0x479bc0
xor edx, edx
mov dword [esp + 0x28], edx
mov ebp, 0x4b56e0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edx
jmp 0x479a00
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
ja 0x479a18
mov ecx, dword [edi + 0xc]
test byte [eax + ecx], 2
jne 0x479a00
mov ecx, esi
sub ecx, dword [esp + 0x24]
sar ecx, 1
cmp word [esi], 0x3a
mov dword [esp + 0x40], ecx
jne 0x479a61
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov edx, esi
mov dword [esp + 0x1c], edx
test ax, ax
je 0x479a55
nop
cmp ax, 0x29
je 0x479a55
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
jne 0x479a40
mov eax, esi
sub eax, edx
sar eax, 1
mov dword [esp + 0x28], eax
xor edx, edx
cmp word [esi], 0x29
jne 0x47b1c6
mov dword [esp + 0x20], edx
mov esi, 0x4b5738
cmp ecx, dword [esi]
jne 0x479a93
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
push edx
push ebp
push eax
call fcn.00489c92
add esp, 0xc
test eax, eax
je 0x479aba
mov ecx, dword [esp + 0x40]
mov edx, dword [esi]
inc dword [esp + 0x20]
add esi, 0xc
lea ebp, [ebp + edx*2 + 2]
cmp esi, 0x4b57a4
jl 0x479a74
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x3c
jmp 0x47b4fa
mov ebp, dword [esp + 0x20]
lea eax, [ebp + ebp*2]
add eax, eax
mov edx, dword [eax + eax + 0x4b573c]
add eax, eax
cmp edx, 0x97
jne 0x479b18
cmp dword [esp + 0x28], 0
jne 0x47b1e9
mov eax, dword [edi + 0x20]
mov dword [edi + 0x54], 1
test eax, eax
je 0x479b08
mov edi, edi
mov byte [ebx], 0x99
mov cl, byte [eax + 5]
mov byte [ebx + 1], cl
mov dl, byte [eax + 4]
mov byte [ebx + 2], dl
mov eax, dword [eax]
add ebx, 3
test eax, eax
jne 0x479af0
cmp dword [edi + 0x44], 0
setg al
add al, 0x97
mov byte [ebx], al
jmp 0x479bad
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x479b5a
test edx, edx
js 0x47b1fb
mov al, dl
mov byte [ebx], al
inc ebx
mov dword [esp + 0x14], ebx
cmp al, 0x93
jne 0x479bb2
mov eax, dword [esp + 0x114]
mov ecx, ebx
sub ecx, dword [eax + 4]
mov dl, bl
dec ecx
sar ecx, 8
mov byte [ebx], cl
sub dl, byte [eax + 4]
dec dl
mov byte [ebx + 1], dl
add ebx, 2
jmp 0x479bae
cmp dword [eax + 0x4b5740], 0
jl 0x47b20d
mov al, byte [eax + 0x4b5740]
mov byte [ebx], al
inc ebx
cmp al, 0x94
jne 0x479b93
mov esi, dword [esp + 0x114]
mov eax, ebx
sub eax, dword [esi + 4]
mov dl, bl
dec eax
sar eax, 8
mov byte [ebx], al
sub dl, byte [esi + 4]
dec dl
mov byte [ebx + 1], dl
add ebx, 2
mov esi, dword [esp + 0x1c]
mov byte [ebx], cl
inc ebx
lea ebx, [ebx]
mov al, byte [esi]
mov byte [ebx], al
inc ebx
add esi, 2
dec ecx
jne 0x479ba0
mov byte [ebx], cl
inc ebx
mov dword [esp + 0x14], ebx
cmp ebp, 9
jge 0x479aa8
jmp 0x4785e3
cmp eax, 0x3f
jne 0x47a45e
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
lea eax, [ecx - 0x21]
cmp eax, 0x5b
ja case.0x479be6.34
movzx edx, byte [eax + 0x47b6e8]
jmp dword [edx*4 + 0x47b6ac]
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
je 0x479c15
lea esp, [esp]
cmp ax, 0x29
je 0x479c38
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
jne 0x479c00
mov edx, dword [esp + 0x108]
mov dword [edx], 0x12
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
cmp word [esi], 0
je 0x479c15
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477993
mov dword [esp + 0x40], 1
jmp case.0x479be6.58
cmp word [esi + 2], 0x3f
mov dword [esp + 0x1c], 0x80
jne 0x479c91
movzx eax, word [esi + 4]
cmp eax, 0x3d
je 0x47a83e
cmp eax, 0x21
je 0x47a83e
cmp eax, 0x3c
je 0x47a83e
mov byte [ebx + 3], 0x86
mov esi, dword [esp + 0x10]
movzx eax, word [esi + 2]
or edx, 0xffffffff
mov dword [esp + 0x20], 3
mov dword [esp + 0x3c], edx
cmp eax, 0x52
jne 0x479ccd
cmp word [esi + 4], 0x26
lea ecx, [esi + 4]
jne 0x479ccd
mov dword [esp + 0x10], ecx
mov byte [ebx + 3], 0x88
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
jmp 0x479d15
cmp eax, 0x3c
jne 0x479ce3
add esi, 2
mov dword [esp + 0x18], 0x3e
mov dword [esp + 0x10], esi
jmp 0x479d15
cmp eax, 0x27
jne 0x479cf5
add esi, 2
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
jmp 0x479d15
mov dword [esp + 0x18], 0
cmp eax, 0x2d
je 0x479d07
cmp eax, 0x2b
jne 0x479d15
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x3c], eax
movzx eax, word [esi + 2]
cmp eax, 0x7f
ja 0x47b2c7
mov edx, dword [edi + 0xc]
test byte [eax + edx], 0x10
je 0x47b2c7
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], esi
cmp eax, 0x7f
ja 0x479d8e
jmp 0x479d50
movzx ebp, ax
test byte [edx + ebp], 0x10
je 0x479d8e
test ecx, ecx
js 0x479d7f
call fcn.004751d0
test eax, eax
je 0x479d73
lea eax, [ecx + ecx*4]
lea ecx, [ebp + eax*2 - 0x30]
mov dword [esp + 0x24], ecx
jmp 0x479d7b
mov dword [esp + 0x24], 0xffffffff
mov ecx, dword [esp + 0x24]
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
jbe 0x479d50
mov ebp, esi
sub ebp, dword [esp + 0x28]
sar ebp, 1
cmp dword [esp + 0x18], 0
jle 0x479db1
movzx edx, word [esi]
add esi, 2
mov dword [esp + 0x10], esi
cmp edx, dword [esp + 0x18]
jne 0x47b21f
mov ax, word [esi]
add esi, 2
mov dword [esp + 0x10], esi
cmp ax, 0x29
jne 0x47b21f
cmp dword [esp + 0x120], 0
jne 0x47a83e
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x479e1a
test ecx, ecx
jle 0x47b245
cmp eax, 0x2d
jne 0x479df6
mov edx, dword [edi + 0x34]
sub edx, ecx
inc edx
mov dword [esp + 0x24], edx
mov ecx, edx
jmp 0x479df9
add ecx, dword [edi + 0x34]
test ecx, ecx
jle 0x47b268
cmp ecx, dword [edi + 0x38]
jg 0x47b268
mov eax, ecx
sar eax, 8
mov byte [ebx + 4], al
mov byte [ebx + 5], cl
jmp 0x47a83e
mov eax, edi
mov esi, dword [eax + 0x28]
xor edi, edi
cmp edi, dword [eax + 0x2c]
jge 0x479e81
mov edx, dword [esp + 0x28]
push ebp
lea ecx, [esi + 4]
push ecx
push edx
call fcn.00489c92
add esp, 0xc
test eax, eax
je 0x479e4f
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 0x30]
inc edi
lea esi, [esi + ecx*2]
cmp edi, dword [eax + 0x2c]
jl 0x479e26
mov eax, dword [esp + 0x11c]
cmp edi, dword [eax + 0x2c]
jge 0x479e81
movzx edx, word [esi]
movzx eax, word [esi + 2]
mov edi, dword [esp + 0x11c]
shl edx, 8
or eax, edx
mov ecx, eax
sar ecx, 8
inc byte [ebx + 3]
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
jmp 0x47a83e
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x11c]
shr edi, 3
and edi, 1
push edx
mov ebx, ebp
call fcn.00475d00
add esp, 4
test eax, eax
jle 0x479ec0
mov ecx, dword [esp + 0x14]
mov edx, eax
sar edx, 8
inc byte [ecx + 3]
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov ebx, ecx
mov edi, esi
jmp 0x47a83e
cmp dword [esp + 0x18], 0
jne 0x47b28b
mov edi, dword [esp + 0x28]
cmp word [edi], 0x52
jne 0x479f29
xor ecx, ecx
lea edx, [ecx + 1]
cmp ebp, edx
jle 0x479f03
mov edi, edi
movzx esi, word [edi + edx*2]
mov eax, esi
call fcn.004751d0
test eax, eax
je 0x47b29d
inc edx
lea eax, [ecx + ecx*4]
lea ecx, [esi + eax*2 - 0x30]
cmp edx, ebp
jl 0x479ee0
test ecx, ecx
jne 0x479f08
mov ecx, 0xffff
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x11c]
mov edx, ecx
sar edx, 8
mov byte [eax + 3], 0x88
mov byte [eax + 4], dl
mov byte [eax + 5], cl
mov ebx, eax
jmp 0x47a83e
cmp ebp, 6
jne 0x479f5a
push ebp
push str.DEFINE
push edi
call fcn.00489c92
add esp, 0xc
test eax, eax
jne 0x479f5a
mov eax, dword [esp + 0x14]
mov byte [eax + 3], 0x8a
mov dword [esp + 0x20], 1
mov ebx, eax
mov edi, esi
jmp 0x47a83e
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x47b2af
cmp eax, dword [esi + 0x38]
jg 0x47b2af
mov ecx, dword [esp + 0x14]
mov edx, eax
sar edx, 8
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov ebx, ecx
mov edi, esi
jmp 0x47a83e
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x77
jmp 0x47a837
add esi, 2
mov dword [esp + 0x10], esi
cmp word [esi], 0x29
jne 0x479fb9
mov byte [ebx], 0x96
inc ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
jmp 0x4785e3
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x78
jmp 0x47a83e
movzx edx, word [esi + 2]
mov eax, edx
cmp eax, 0x21
je 0x47a0b7
cmp eax, 0x3d
je 0x47a0a4
cmp edx, 0x7f
ja 0x47b2ed
mov edx, dword [edi + 0xc]
test byte [eax + edx], 0x10
je 0x47b2ed
xor eax, eax
cmp cx, 0x3c
setne al
add esi, 2
mov dword [esp + 0x10], esi
mov ecx, esi
mov dword [esp + 0x28], ecx
lea ebp, [eax - 1]
movzx eax, word [esi]
and ebp, 0x17
add ebp, 0x27
cmp eax, 0x7f
ja 0x47a039
mov edx, dword [edi + 0xc]
movzx eax, ax
test byte [eax + edx], 0x10
je 0x47a039
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
jbe 0x47a021
mov eax, esi
sub eax, ecx
sar eax, 1
cmp dword [esp + 0x120], 0
mov dword [esp + 0x20], eax
je 0x47a241
movzx ecx, word [esi]
cmp ecx, ebp
jne 0x47b359
cmp dword [edi + 0x2c], 0x2710
jge 0x47b37c
lea ecx, [eax + 3]
cmp ecx, dword [edi + 0x30]
jle 0x47a40f
mov dword [edi + 0x30], ecx
cmp eax, 0x20
jle 0x47a40f
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x30
xor eax, eax
pop ebx
add esp, 0xe8
ret
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x79
add esi, 4
jmp 0x47a83a
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x7a
add esi, 4
jmp 0x47a83a
mov dword [esp + 0x1c], 0x7b
jmp 0x47a837
mov byte [ebx], 0x70
mov esi, dword [esp + 0x10]
mov dword [esp + 0x64], esi
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
xor edx, edx
mov eax, ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0xa4], 1
mov dword [esp + 0x20], edx
xor ebp, ebp
call fcn.004751d0
test eax, eax
je 0x47a133
mov edi, edi
movzx ecx, cx
lea eax, [edx + edx*4]
add esi, 2
lea edx, [ecx + eax*2 - 0x30]
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov eax, ecx
call fcn.004751d0
test eax, eax
jne 0x47a110
mov dword [esp + 0x20], edx
movzx eax, word [esi]
cmp eax, 0x29
je 0x47a19e
test ax, ax
je 0x47b313
cmp eax, 0x3a
je 0x47a151
mov esi, dword [esp + 0x64]
mov dword [esp + 0x20], ebp
lea ecx, [esi + 2]
mov dword [esp + 0x64], ecx
jmp 0x47a160
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
je 0x47b313
cmp eax, 0x29
jne 0x47a160
cmp word [esi], bp
je 0x47b313
sub esi, ecx
sar esi, 1
push esi
push ecx
call dword [0x4c3fbc]
mov esi, dword [esp + 0x18]
mov ebp, eax
add esp, 8
test ebp, ebp
je 0x47b313
mov eax, dword [esp + 0x20]
cmp eax, 0xff
jg 0x47b336
mov byte [ebx + 1], al
mov dword [ebx + 2], ebp
mov edx, dword [esp + 0x10]
sub edx, dword [edi + 0x18]
mov dword [esp + 0x18], 0
sar edx, 1
inc edx
sar edx, 8
mov byte [ebx + 6], dl
mov eax, dword [esp + 0x10]
sub eax, dword [edi + 0x18]
mov word [ebx + 8], 0
sar eax, 1
inc al
mov byte [ebx + 7], al
add ebx, 0xa
mov dword [esp + 0x14], ebx
jmp 0x4785e3
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
cmp ecx, 0x3d
je 0x47a22b
cmp ecx, 0x3e
je 0x47a22b
cmp ecx, 0x3c
je case.0x479be6.39
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x29
xor eax, eax
pop ebx
add esp, 0xe8
ret
xor edx, edx
cmp ecx, 0x3e
sete dl
mov ecx, 0x29
mov dword [esp + 0x20], edx
jmp 0x47aba4
mov eax, edi
mov edi, dword [eax + 0x28]
mov eax, dword [eax + 0x2c]
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], eax
cmp eax, ecx
jle 0x47a368
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x28]
add ecx, ecx
lea edx, [edi + 4]
cmp ecx, 4
jb 0x47a28a
mov eax, dword [ebp]
cmp eax, dword [edx]
jne 0x47a28e
sub ecx, 4
add edx, 4
add ebp, 4
cmp ecx, 4
jae 0x47a275
test ecx, ecx
je 0x47a2da
movzx eax, byte [ebp]
movzx edi, byte [edx]
sub eax, edi
jne 0x47a2ca
cmp ecx, 1
jbe 0x47a2d6
movzx eax, byte [ebp + 1]
movzx edi, byte [edx + 1]
sub eax, edi
jne 0x47a2ca
cmp ecx, 2
jbe 0x47a2d6
movzx eax, byte [ebp + 2]
movzx edi, byte [edx + 2]
sub eax, edi
jne 0x47a2ca
cmp ecx, 3
jbe 0x47a2d6
movzx eax, byte [ebp + 3]
movzx ecx, byte [edx + 3]
sub eax, ecx
mov edi, dword [esp + 0x18]
sar eax, 0x1f
or eax, 1
jmp 0x47a2dc
mov edi, dword [esp + 0x18]
xor eax, eax
mov edx, dword [esp + 0x11c]
mov ecx, dword [esp + 0x3c]
test eax, eax
jne 0x47a323
mov eax, dword [esp + 0x20]
cmp word [edi + eax*2 + 4], 0
jne 0x47a343
movzx eax, word [edi]
movzx ecx, word [edi + 2]
shl eax, 8
or ecx, eax
mov eax, dword [edx + 0x34]
inc eax
cmp ecx, eax
je 0x47a319
test dword [esp + 0x30], 0x80000
je 0x47b39f
mov dword [esp + 0x14], 1
jmp 0x47a325
js 0x47a343
mov eax, dword [esp + 0x24]
mov ecx, dword [edx + 0x30]
inc eax
lea edi, [edi + ecx*2]
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], eax
cmp eax, dword [edx + 0x2c]
jl 0x47a263
jmp 0x47a361
sub ecx, dword [esp + 0x24]
mov eax, dword [edx + 0x30]
imul ecx, eax
add ecx, ecx
push ecx
lea edx, [edi + eax*2]
push edi
push edx
call fcn.00488c10
mov esi, dword [esp + 0x1c]
add esp, 0xc
cmp dword [esp + 0x14], 0
jne 0x47a3c1
mov ecx, dword [esp + 0x11c]
mov eax, dword [ecx + 0x28]
xor edx, edx
mov dword [esp + 0x24], edx
cmp dword [ecx + 0x2c], edx
jle 0x47a3c1
lea ecx, [ecx]
cmp eax, edi
je 0x47a3a9
movzx ecx, word [eax]
movzx edx, word [eax + 2]
shl ecx, 8
or edx, ecx
mov ecx, dword [esp + 0x11c]
mov ebp, dword [ecx + 0x34]
inc ebp
cmp edx, ebp
je 0x47b3c2
mov edx, dword [esp + 0x24]
jmp 0x47a3b1
mov ecx, dword [esp + 0x11c]
dec edx
mov ebp, dword [ecx + 0x30]
inc edx
lea eax, [eax + ebp*2]
mov dword [esp + 0x24], edx
cmp edx, dword [ecx + 0x2c]
jl 0x47a380
mov eax, dword [esp + 0x11c]
mov edx, dword [eax + 0x34]
mov esi, dword [esp + 0x20]
inc edx
sar edx, 8
mov word [edi], dx
mov ax, word [eax + 0x34]
inc ax
mov ecx, 0xff
and ax, cx
lea edx, [esi + esi]
mov word [edi + 2], ax
mov eax, dword [esp + 0x28]
push edx
push eax
lea ecx, [edi + 4]
push ecx
call fcn.00490240
add esp, 0xc
xor edx, edx
mov word [edi + esi*2 + 4], dx
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x11c]
inc dword [edi + 0x2c]
add esi, 2
mov dword [esp + 0x10], esi
inc dword [edi + 0x34]
mov eax, dword [edi + 0x34]
sar eax, 8
mov byte [ebx + 3], al
mov cl, byte [edi + 0x34]
mov byte [ebx + 4], cl
mov dword [esp + 0x20], 2
jmp 0x47a83e
mov ecx, 0x29
mov dword [esp + 0x20], 1
jmp 0x47aba4
add esi, 2
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], 0x29
jmp 0x47a683
test edx, 0x1000
je 0x47a419
mov dword [esp + 0x1c], 0x7c
jmp 0x47a83e
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x11c]
mov eax, dword [edi + 0x34]
mov ecx, dword [esp + 0x108]
push edx
push eax
push ecx
lea edx, [esp + 0x1c]
push edx
xor ecx, ecx
mov dword [esp + 0x74], esi
call fcn.00475290
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x118]
add esp, 0x10
cmp dword [eax], 0
jne 0x47b4fa
mov eax, dword [esp + 0x1c]
xor edx, edx
cmp eax, edx
jge 0x477b94
mov esi, eax
neg esi
cmp esi, 0x1a
jne 0x47a511
mov esi, dword [esp + 0x10]
cmp word [esi + 2], 0x5c
jne 0x47a4f1
cmp word [esi + 4], 0x45
jne 0x47a4f1
add esi, 4
add esi, 2
mov edx, edi
mov edi, dword [esp + 0xd4]
xor ecx, ecx
jmp 0x477993
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
mov dword [esp + 0x50], 1
xor ecx, ecx
jmp 0x477993
cmp esi, 0x19
je 0x47afcf
mov ecx, dword [esp + 0x34]
cmp ecx, 0xfffffffe
jne 0x47a534
cmp esi, 5
jle 0x47a534
cmp esi, 0x17
jge 0x47a534
or ecx, 0xffffffff
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x60], ecx
cmp esi, 0x1b
jne 0x47ab38
mov esi, dword [esp + 0x10]
add esi, 2
mov edx, edi
mov eax, dword [edx + 0x24]
xor edx, edx
mov dword [esp + 0x10], esi
cmp word [esi], 0x3c
mov dword [esp + 0x5c], eax
setne dl
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], eax
movzx eax, word [esi + 2]
dec edx
and edx, 0x17
add edx, 0x27
mov dword [esp + 0x18], edx
cmp eax, 0x2b
je 0x47a628
cmp eax, 0x2d
je 0x47a628
movzx ecx, word [esi + 2]
lea edx, [esi + 2]
mov dword [esp + 0x3c], 1
test cx, cx
je 0x47a5e2
movzx eax, cx
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x18]
je 0x47a5e2
mov eax, ecx
call fcn.004751d0
test eax, eax
jne 0x47a5c1
mov dword [esp + 0x3c], eax
cmp cx, 0x7f
ja 0x47a5e2
mov ecx, edi
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x54]
test byte [ecx + eax], 0x10
je 0x47a5e2
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x47a5a5
movzx edx, word [edx]
cmp edx, dword [esp + 0x18]
je 0x47a610
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
mov dword [eax], 0x39
xor ecx, ecx
jmp 0x477993
cmp dword [esp + 0x3c], 0
jne 0x47a67c
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], 1
jmp 0x47aba4
mov ax, word [esi + 4]
lea ecx, [esi + 4]
call fcn.004751d0
test eax, eax
je 0x47a650
jmp 0x47a640
mov ax, word [ecx + 2]
add ecx, 2
call fcn.004751d0
test eax, eax
jne 0x47a640
movzx ecx, word [ecx]
cmp ecx, edx
je 0x47a67c
mov edx, dword [esp + 0x108]
mov edi, dword [esp + 0xd4]
mov dword [edx], 0x39
mov edx, dword [esp + 0x11c]
add esi, 2
xor ecx, ecx
jmp 0x477993
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov edx, ecx
cmp edx, 0x2b
jne 0x47a6c5
add esi, 2
mov dword [esp + 0x10], esi
mov ax, word [esi]
call fcn.004751d0
test eax, eax
jne 0x47aa95
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x3f
pop ebx
add esp, 0xe8
ret
cmp edx, 0x2d
jne 0x47aa95
mov ax, word [esi + 2]
call fcn.004751d0
test eax, eax
jne 0x47aa8e
mov edi, dword [esp + 0x11c]
xor ebp, ebp
xor edx, edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], edx
lea eax, [esp + 0x3c]
cmp cx, 0x29
je 0x47a76b
lea esp, [esp]
cmp cx, 0x3a
je 0x47a763
movzx ecx, cx
add esi, 2
sub ecx, 0x2d
mov dword [esp + 0x10], esi
cmp ecx, 0x4b
ja case.0x47a723.46
movzx ecx, byte [ecx + 0x47b768]
jmp dword [ecx*4 + 0x47b744]
lea eax, [esp + 0x24]
jmp 0x47a75b
or dword [eax], 0x80000
or dword [edi + 0x4c], 0x10
jmp 0x47a75b
or dword [eax], 1
jmp 0x47a75b
or dword [eax], 2
jmp 0x47a75b
or dword [eax], 4
jmp 0x47a75b
or dword [eax], 8
jmp 0x47a75b
or dword [eax], 0x200
jmp 0x47a75b
or dword [eax], 0x40
movzx ecx, word [esi]
cmp ecx, 0x29
jne 0x47a700
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x24]
or edx, dword [esp + 0x30]
not ebp
and edx, ebp
cmp word [esi], 0x29
mov dword [esp + 0x54], edx
jne 0x47a828
mov eax, dword [edi + 0x14]
add eax, 3
cmp ebx, eax
jne 0x47a7cf
mov eax, dword [esp + 0x120]
test eax, eax
je 0x47a79b
cmp dword [eax], 6
jne 0x47a7cf
mov ecx, dword [esp + 0xfc]
mov dword [edi + 0x48], edx
mov edi, dword [esp + 0xd4]
mov dword [ecx], edx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x11c]
add esi, 2
xor ecx, ecx
jmp 0x477993
mov ecx, dword [esp + 0xfc]
mov edi, dword [esp + 0xd4]
mov eax, edx
shr eax, 9
and eax, 1
mov dword [esp + 0xb0], eax
xor eax, 1
mov dword [esp + 0xb8], eax
mov eax, edx
and eax, 1
shl eax, 8
mov dword [ecx], edx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x11c]
add esi, 2
mov dword [esp + 0x9c], eax
xor ecx, ecx
jmp 0x477993
mov edi, dword [esp + 0x11c]
mov dword [esp + 0x1c], 0x7c
add esi, 2
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x1c]
mov byte [ebx], cl
mov edx, dword [edi + 0x50]
xor eax, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x6c], eax
cmp ecx, 0x79
je 0x47a863
cmp ecx, 0x7a
jne 0x47a868
mov eax, 1
mov ebp, dword [esp + 0x120]
mov ecx, ebp
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x6c]
and ecx, edx
push ecx
mov ecx, dword [esp + 0x118]
push edi
push ecx
lea edx, [esp + 0xa4]
push edx
xor edx, edx
cmp dword [esp + 0x2c], 0x80
lea ecx, [esp + 0xb8]
sete dl
push ecx
mov ecx, dword [esp + 0x34]
add edx, dword [esp + 0x12c]
push edx
mov edx, dword [esp + 0x58]
push ecx
push edx
push eax
mov eax, dword [esp + 0x12c]
push eax
mov eax, dword [esp + 0x7c]
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x64]
push edx
push eax
call fcn.0047b7c0
add esp, 0x34
test eax, eax
je 0x47b4fa
mov edx, dword [esp + 0x1c]
lea ecx, [edx - 0x77]
cmp ecx, 3
ja 0x47a8eb
dec dword [edi + 0x44]
cmp edx, 0x80
jne 0x47a930
test ebp, ebp
jne 0x47a930
mov eax, ebx
xor ecx, ecx
jmp 0x47a900
movzx esi, byte [eax + 1]
movzx edi, byte [eax + 2]
shl esi, 8
or esi, edi
add eax, esi
inc ecx
cmp byte [eax], 0x72
jne 0x47a900
cmp byte [ebx + 3], 0x8a
jne 0x47a98d
cmp ecx, 1
jg 0x47b40b
mov dword [esp + 0x1c], 0x8a
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x98]
mov esi, dword [esp + 0x10]
cmp word [esi], 0x29
jne 0x47b42f
test ebp, ebp
je 0x47a9b0
mov eax, dword [ebp]
mov ecx, dword [esp + 0x6c]
mov edx, 0x7fffffeb
sub edx, eax
lea edi, [ecx - 6]
cmp edx, edi
jl 0x47b0a3
lea eax, [eax + ecx - 6]
mov ecx, ebp
mov dword [ecx], eax
mov word [ebx + 1], 0x300
mov word [ebx + 3], 0x72
mov byte [ebx + 5], 3
add ebx, 6
mov dword [esp + 0x14], ebx
jmp 0x4785e3
cmp ecx, 2
jg 0x47b41d
cmp ecx, 1
jne 0x47a930
or ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa8], eax
jmp 0x47a93e
mov edi, dword [esp + 0x38]
mov dword [esp + 0x14], edi
cmp edx, 0x8a
je 0x479962
mov edi, dword [esp + 0x44]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x4c], edi
mov dword [esp + 0xa0], 0
cmp edx, 0x7b
jl 0x47aa59
cmp edi, 0xfffffffe
jne 0x47aa18
test eax, eax
js 0x47aa06
mov dword [esp + 0x34], eax
mov dword [esp + 0xa0], 1
mov dword [esp + 0x4c], 0xffffffff
jmp 0x47aa2d
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x4c], 0xffffffff
jmp 0x47aa2d
test eax, eax
js 0x47aa2d
test ecx, ecx
jns 0x47aa35
or eax, dword [esp + 0x3c]
mov ecx, eax
mov dword [esp + 0x98], ecx
test ecx, ecx
js 0x479962
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
mov dword [esp + 0x44], ecx
add esi, 2
xor ecx, ecx
jmp 0x477993
cmp edx, 0x77
jne 0x479962
test ecx, ecx
js 0x479962
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
mov dword [esp + 0x44], ecx
add esi, 2
xor ecx, ecx
jmp 0x477993
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov eax, ecx
xor ebx, ebx
call fcn.004751d0
test eax, eax
je 0x47aac4
movzx ecx, cx
lea eax, [ebx + ebx*4]
add esi, 2
lea ebx, [ecx + eax*2 - 0x30]
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov eax, ecx
call fcn.004751d0
test eax, eax
jne 0x47aaa5
movzx eax, word [esi]
cmp eax, dword [esp + 0x18]
jne 0x47b452
cmp edx, 0x2d
jne 0x47ab18
test ebx, ebx
je 0x47b475
mov ecx, dword [esp + 0x11c]
mov edx, dword [ecx + 0x34]
sub edx, ebx
lea ebx, [edx + 1]
test ebx, ebx
jg 0x47acbf
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0xf
xor eax, eax
pop ebx
add esp, 0xe8
ret
cmp edx, 0x2b
jne 0x47acbf
test ebx, ebx
je 0x47b245
mov eax, dword [esp + 0x11c]
add ebx, dword [eax + 0x34]
jmp 0x47acbf
cmp esi, 0x1c
jne 0x47adcc
mov esi, dword [esp + 0x10]
movzx eax, word [esi + 2]
cmp eax, 0x3c
je 0x47ab7d
cmp eax, 0x27
je 0x47ab7d
cmp eax, 0x7b
je 0x47ab7d
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
mov dword [ecx], 0x45
add esi, 2
xor ecx, ecx
jmp 0x477993
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x20], edx
cmp eax, 0x3c
jne 0x47ab95
lea ecx, [eax + 2]
jmp 0x47aba4
xor ecx, ecx
cmp eax, 0x27
setne cl
dec ecx
and ecx, 0xffffffaa
add ecx, 0x7d
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov ebp, esi
mov dword [esp + 0x28], ebp
cmp eax, 0x7f
ja 0x47abd8
mov edx, dword [edi + 0xc]
lea esp, [esp]
movzx eax, ax
test byte [eax + edx], 0x10
je 0x47abd8
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
jbe 0x47abc0
mov ebx, esi
sub ebx, ebp
sar ebx, 1
cmp dword [esp + 0x120], 0
je 0x47ac3f
test ebx, ebx
je 0x47b498
movzx edx, word [esi]
cmp edx, ecx
jne 0x47b4bb
cmp ebx, 0x20
jg 0x47a081
mov ebp, dword [esp + 0x11c]
mov eax, dword [ebp + 0x1c]
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov dword [ebp + 0x1c], esi
shr edi, 3
and edi, 1
push ecx
mov esi, ebp
mov dword [esp + 0x58], eax
call fcn.00475d00
mov edx, dword [esp + 0x58]
mov ebx, eax
add esp, 4
mov dword [ebp + 0x1c], edx
test ebx, ebx
jns 0x47acb4
xor ebx, ebx
jmp 0x47acb4
mov esi, dword [edi + 0x28]
xor ebp, ebp
cmp ebp, dword [edi + 0x2c]
jge 0x47ac8c
lea esp, [esp]
mov ecx, dword [esp + 0x28]
push ebx
lea eax, [esi + 4]
push eax
push ecx
call fcn.00489c92
add esp, 0xc
test eax, eax
jne 0x47ac6d
cmp word [esi + ebx*2 + 4], ax
je 0x47ac79
mov edx, dword [edi + 0x30]
inc ebp
lea esi, [esi + edx*2]
cmp ebp, dword [edi + 0x2c]
jl 0x47ac50
cmp ebp, dword [edi + 0x2c]
jge 0x47ac8c
movzx eax, word [esi]
movzx ebx, word [esi + 2]
shl eax, 8
or ebx, eax
jmp 0x47acb4
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x11c]
shr edi, 3
and edi, 1
push ecx
call fcn.00475d00
mov ebx, eax
add esp, 4
test ebx, ebx
jle 0x47b4de
cmp dword [esp + 0x20], 0
je 0x47adde
cmp dword [esp + 0x120], 0
mov edx, dword [esp + 0x11c]
mov ecx, dword [esp + 0x14]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], eax
jne 0x47ad92
mov byte [ecx], 0
test ebx, ebx
je 0x47acfe
mov eax, edx
mov eax, dword [eax + 0x14]
mov esi, ebx
call fcn.004760a0
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
test eax, eax
jne 0x47ad4f
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x11c]
shr edi, 3
and edi, 1
push eax
call fcn.00475d00
add esp, 4
test eax, eax
js 0x47b28b
mov ecx, dword [esi + 0x14]
mov eax, dword [esp + 0x14]
mov edx, eax
sub edx, ecx
inc edx
add ebx, ecx
mov ecx, dword [esi + 0x24]
sar edx, 8
mov byte [ecx], dl
sub al, byte [esi + 0x14]
mov edx, dword [esi + 0x24]
inc al
mov byte [edx + 1], al
add dword [esi + 0x24], 2
mov dword [esp + 0x20], ebx
jmp 0x47ad8a
movzx edx, byte [eax + 1]
movzx esi, byte [eax + 2]
shl edx, 8
or edx, esi
jne 0x47ad92
cmp dword [esp + 0x118], edx
jg 0x47ad92
mov edi, dword [esp + 0x11c]
mov ebx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x118]
call fcn.004767e0
add esp, 4
test eax, eax
jne 0x47b4ed
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x11c]
mov byte [ecx], 0x6f
mov edx, eax
sub edx, dword [esi + 0x14]
add ecx, 3
sar edx, 8
mov byte [ecx - 2], dl
sub al, byte [esi + 0x14]
cmp dword [esp + 0x34], 0xfffffffe
mov byte [ecx - 1], al
mov dword [esp + 0x14], ecx
jne 0x4785df
mov dword [esp + 0x34], 0xffffffff
jmp 0x4785df
cmp esi, 0x23
jl 0x47ae61
mov ebx, 0xffffffdd
sub ebx, dword [esp + 0x1c]
cmp dword [esp + 0x34], 0xfffffffe
jne 0x47aded
mov dword [esp + 0x34], 0xffffffff
test byte [esp + 0x30], 1
mov eax, dword [esp + 0x14]
setne cl
add cl, 0x6d
mov byte [eax], cl
mov edx, ebx
sar edx, 8
mov dword [esp + 0x18], eax
mov byte [eax + 1], dl
mov byte [eax + 2], bl
add eax, 3
mov dword [esp + 0x14], eax
mov eax, 1
cmp ebx, 0x20
jge 0x47ae22
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x11c]
or dword [ecx + 0x40], eax
cmp ebx, dword [ecx + 0x3c]
jle 0x47ae34
mov dword [ecx + 0x3c], ebx
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4785df
nop
movzx ecx, word [eax + 4]
cmp ecx, ebx
je 0x47ae53
mov eax, dword [eax]
test eax, eax
jne 0x47ae40
jmp 0x4785df
mov edx, 1
mov word [eax + 6], dx
jmp 0x4785df
cmp esi, 0xf
je 0x47aecb
cmp esi, 0x10
je 0x47aecb
cmp esi, 0x1d
jl 0x47aeab
cmp esi, 0x22
jg 0x47aeab
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0xd4]
lea edx, [eax*4 + 0x74]
mov eax, 0x4be2d0
sub eax, edx
mov esi, dword [eax]
mov edx, dword [esp + 0x11c]
add ecx, 2
sub esi, 2
mov dword [esp + 0x68], ecx
add esi, 2
xor ecx, ecx
jmp 0x477993
cmp esi, 5
jle 0x47aeb9
mov dword [esp + 0x18], ebx
cmp esi, 0x17
jl 0x47aebd
mov dword [esp + 0x18], edx
neg al
mov byte [ebx], al
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x4785e3
mov ecx, dword [esp + 0x108]
push ecx
lea edx, [esp + 0xc8]
push edx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0xdc]
call fcn.004756a0
add esp, 0xc
test eax, eax
js 0x47b4fa
xor ecx, ecx
cmp esi, 0x10
sete cl
mov dword [esp + 0x18], ebx
cmp ecx, dword [esp + 0xd0]
setne dl
add dl, 0xf
mov byte [ebx], dl
mov byte [ebx + 1], al
mov al, byte [esp + 0xc4]
mov byte [ebx + 2], al
add ebx, 3
mov dword [esp + 0x14], ebx
jmp 0x4785e3
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x60], edx
cmp eax, 0xfffffffe
jne 0x47af89
or eax, 0xffffffff
mov dword [esp + 0x4c], eax
cmp ebp, 0x80
jge 0x47af7c
mov eax, ebp
or eax, dword [esp + 0x9c]
mov dword [esp + 0x34], eax
cmp ebp, 0x7f
jle 0x4785df
mov eax, dword [esp + 0x14]
movzx eax, byte [eax - 1]
or eax, dword [ecx + 0x50]
mov dword [esp + 0x44], eax
jmp 0x4785df
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], eax
jmp 0x4785df
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
cmp ebp, 0x80
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
jge 0x4785eb
movzx eax, byte [edi - 1]
or eax, dword [ecx + 0x50]
mov edx, dword [esp + 0x11c]
or eax, dword [esp + 0x9c]
mov edi, dword [esp + 0xd4]
add esi, 2
mov dword [esp + 0x44], eax
xor ecx, ecx
jmp 0x477993
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477993
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x34
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x14
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x34
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x110]
mov dword [eax], ecx
mov ecx, dword [esp + 0x100]
mov eax, dword [esp + 0x44]
mov dword [ecx], ebx
mov ecx, dword [esp + 0x120]
mov dword [edx], eax
mov edx, dword [esp + 0x104]
mov dword [edx], esi
test ecx, ecx
je 0x47b0cc
mov eax, dword [ecx]
mov edx, dword [esp + 0x94]
mov edi, ebx
mov ebp, 0x7fffffeb
sub edi, edx
sub ebp, eax
cmp ebp, edi
jge 0x47b0c6
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x14
xor eax, eax
pop ebx
add esp, 0xe8
ret
sub eax, edx
add eax, ebx
mov dword [ecx], eax
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xe8
ret
mov eax, dword [esp + 0x108]
xor edx, edx
cmp word [esi + 2], 0x3a
pop edi
setne dl
dec edx
and edx, 0xffffffee
add edx, 0x1f
mov dword [eax], edx
mov edx, dword [esp + 0x100]
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x1f
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x1e
jmp 0x47b4fa
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ebx], 7
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 8
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 6
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 9
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x3c
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x3b
jmp 0x47b4fa
mov edx, dword [esp + 0x108]
mov dword [edx], 0x42
jmp 0x47b4fa
mov eax, dword [esp + 0x108]
mov dword [eax], 0x3b
jmp 0x47b4fa
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
sub esi, 2
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x1a
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x3a
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0xf
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov eax, dword [esp + 0x108]
mov dword [eax], 0xf
jmp 0x47b4fa
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0xf
jmp 0x47b4fa
mov edx, dword [esp + 0x108]
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov dword [edx], eax
jmp 0x47b4fa
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
add esi, 2
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x1c
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
add esi, 2
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x18
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x27
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x26
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x2a
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x31
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x2b
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x41
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
sub esi, 2
mov dword [edx], 0xc
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov eax, dword [esp + 0x108]
mov dword [eax], 0x36
jmp 0x47b4fa
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x1b
jmp 0x47b4fa
mov edx, dword [esp + 0x108]
mov dword [edx], 0xe
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [ecx], 0x1d
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x3a
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0x3e
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
pop edi
mov dword [edx], esi
pop esi
pop ebp
mov dword [eax], 0x2a
xor eax, eax
pop ebx
add esp, 0xe8
ret
mov edx, dword [esp + 0x108]
mov dword [edx], 0xf
jmp 0x47b4fa
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x28
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x104]
pop edi
mov dword [edx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xe8
ret