Function at 0x477a40
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 0x477b1b
mov eax, dword [esp + 0x68]
cmp eax, ecx
je 0x477b1b
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 0x477bd2
mov ecx, dword [edx + 0x10]
add ecx, 0xf9c
cmp ebx, ecx
ja 0x47b14b
mov eax, dword [esp + 0x94]
cmp ebx, eax
jae 0x477b4a
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 0x47b16e
sub eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x120]
add eax, ebx
mov dword [ecx], eax
xor ecx, ecx
cmp ebp, ecx
je 0x477bbc
cmp ebp, edi
jbe 0x477bc2
mov edx, ebx
sub edx, ebp
push edx
push ebp
push edi
call fcn.00488d70
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 0x477be3
mov dword [esp + 0x14], edi
mov ebx, edi
mov edx, dword [esp + 0x11c]
mov dword [esp + 0x94], ebx
jmp 0x477be3
mov eax, dword [edx + 0x10]
add eax, 0xf9c
cmp dword [edx + 0x24], eax
ja 0x47b191
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x50], ecx
je 0x477d71
cmp eax, ecx
je 0x477d71
cmp eax, 0x5c
jne 0x477c24
cmp word [esi + 2], 0x45
jne 0x477c24
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 0x477af3
mov eax, dword [esp + 0x58]
cmp eax, ecx
je 0x477c6b
cmp dword [esp + 0x120], ecx
jne 0x477c67
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.0x477f0c.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 0x477cf4
movzx eax, word [esi + 2]
add esi, 2
mov edx, 0xdc00
cmp ax, dx
jb 0x477cf4
mov ecx, 0xdfff
cmp ax, cx
ja 0x477cf4
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 0x477d1f
inc eax
cmp eax, 6
jl 0x477d10
lea edi, [eax + ebx + 1]
mov ecx, edi
mov esi, eax
test eax, eax
jle 0x477d43
jmp 0x477d30
mov bl, dl
and bl, 0x3f
or bl, 0x80
mov byte [ecx], bl
dec esi
dec ecx
sar edx, 6
test esi, esi
jg 0x477d30
mov al, byte [eax*4 + 0x4b4640]
or al, dl
inc edi
mov byte [ecx], al
mov dword [esp + 0x14], edi
cmp ebp, 0xd
je 0x477d61
cmp ebp, 0xa
jne 0x47b08b
mov ecx, dword [esp + 0x11c]
or dword [ecx + 0x4c], 0x20
jmp 0x47b092
cmp eax, 0x2a
je 0x477f13
cmp eax, 0x2b
je 0x477f13
cmp eax, 0x3f
je 0x477f13
cmp eax, 0x7b
jne 0x477da1
lea eax, [esi + 2]
call fcn.00475350
test eax, eax
jne 0x477f13
mov edi, dword [esp + 0x58]
xor ecx, ecx
mov dword [esp + 0x20], ecx
cmp edi, ecx
je 0x477dfd
mov eax, dword [esp + 0xa4]
mov edx, eax
dec eax
mov dword [esp + 0xa4], eax
test edx, edx
jg 0x477dfd
cmp dword [esp + 0x120], ecx
jne 0x477df9
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 0x477ea4
mov eax, dword [esp + 0x1c]
cmp eax, 0x7f
jg 0x477e27
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx + 0xc]
test byte [eax + ecx], 1
jne 0x47874b
cmp eax, 0x23
jne 0x477ea4
add esi, 2
mov dword [esp + 0x10], esi
movzx edx, word [esi]
test dx, dx
je 0x477e98
jmp 0x477e40
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 0x5c]
test ecx, ecx
je 0x477f20
mov eax, dword [eax + 0x1c]
cmp esi, eax
jae 0x477f5d
mov edi, dword [esp + 0x11c]
push 1
push ecx
add edi, 0x60
mov ecx, esi
call fcn.004878a0
add esp, 8
test eax, eax
je 0x477f5d
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 0x47874b
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], 0
test edx, 0x4000
je 0x477ef6
cmp dword [esp + 0x20], 0
jne 0x477ef6
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.0x477f0c.1
mov eax, dword [esp + 0x1c]
movzx ecx, byte [eax + 0x47b6a8]
jmp dword [ecx*4 + 0x47b674]
mov dword [esp + 0x20], 1
jmp 0x477dfd
mov ecx, dword [eax + 0x60]
mov eax, dword [eax + 0x1c]
lea edi, [ecx + ecx]
sub eax, edi
cmp esi, eax
ja 0x477f5d
mov eax, dword [esp + 0x11c]
movzx eax, byte [eax + 0x64]
cmp dx, ax
jne 0x477f5d
cmp ecx, 1
je 0x477e7c
mov ecx, dword [esp + 0x11c]
movzx edx, byte [ecx + 0x65]
cmp word [esi + 2], dx
je 0x477e7c
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov ecx, 0xdc00
cmp ax, cx
jb 0x477f9a
mov edx, 0xdfff
cmp ax, dx
ja 0x477f9a
movzx eax, word [esi - 2]
mov ecx, 0xd800
cmp ax, cx
jb 0x477f9a
mov edx, 0xdbff
cmp ax, dx
ja 0x477f9a
add esi, 2
mov dword [esp + 0x10], esi
movzx edx, word [esi]
test dx, dx
jne 0x477e40
jmp 0x477e98
mov dword [esp + 0x18], 0
test dl, 2
je 0x477fd4
cmp dword [esp + 0x34], 0xfffffffe
jne 0x477fc7
mov dword [esp + 0x34], 0xffffffff
mov byte [ebx], 0x1a
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x478743
mov byte [ebx], 0x19
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x478743
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 0x478743
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x47800e
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 0x478743
mov ecx, dword [esp + 0x11c]
test dword [ecx + 0x48], 0x2000000
je case.0x477f0c.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 0x478081
cmp eax, 0x2e
je 0x478081
cmp eax, 0x3d
jne 0x47809b
lea edx, [esp + 0x64]
push edx
push esi
call fcn.00476980
mov esi, dword [esp + 0x18]
add esp, 8
test eax, eax
jne 0x47b23c
xor ebp, ebp
mov dword [esp + 0x4c], ebp
add esi, 2
mov dword [esp + 0x10], esi
movzx edi, word [esi]
cmp edi, 0x5c
jne 0x4780d6
add esi, 2
cmp word [esi], 0x45
je 0x4780a1
push 3
push 0x4b8714
push esi
call fcn.00489df2
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x478128
add esi, 6
jmp 0x4780a1
test ebp, ebp
jne 0x4780e4
cmp edi, 0x5e
jne 0x4780e4
lea ebp, [edi - 0x5d]
jmp 0x47809d
cmp edi, 0x5d
jne 0x478128
mov eax, dword [esp + 0x11c]
test dword [eax + 0x48], 0x2000000
je 0x478128
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 0x47811b
mov dword [esp + 0x34], 0xffffffff
mov edx, dword [esp + 0x34]
mov dword [esp + 0x4c], edx
jmp 0x478743
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 0x47b2e0
lea esp, [esp]
cmp edi, 0x7f
jle 0x4781b9
movzx edi, word [esi]
lea eax, [edi - 0xd800]
cmp eax, 0x3ff
ja 0x4781b9
movzx eax, word [esi + 2]
lea ecx, [eax - 0xdc00]
cmp ecx, 0x3ff
ja 0x4781b9
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 0x4781ce
mov edx, ebp
mov ebp, dword [esp + 0x54]
sub edx, ebp
add dword [eax], edx
mov edx, dword [esp + 0x50]
test edx, edx
je 0x4781fa
cmp edi, 0x5c
jne 0x478405
cmp word [esi + 2], 0x45
jne 0x478405
mov dword [esp + 0x50], 0
add esi, 2
jmp 0x47868c
cmp edi, 0x5b
jne 0x4783b5
movzx eax, word [esi + 2]
cmp eax, 0x3a
je 0x47821a
cmp eax, 0x2e
je 0x47821a
cmp eax, 0x3d
jne 0x478405
lea eax, [esp + 0x64]
push eax
push esi
call fcn.00476980
add esp, 8
test eax, eax
je 0x4783fd
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 0x47b26c
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], 0x5e
jne 0x478274
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.00476a10
add esp, 4
test eax, eax
js 0x47b28f
mov ecx, dword [esp + 0x30]
test cl, 1
je 0x47829d
cmp eax, 2
jg 0x47829d
xor eax, eax
test ecx, 0x20000000
je 0x4782ce
mov ecx, edi
neg ecx
sbb ecx, ecx
and ecx, 0xe
add ecx, eax
mov esi, dword [ecx*4 + 0x4be2e8]
test esi, esi
je 0x4782ce
mov eax, dword [esp + 0x64]
add eax, 2
mov dword [esp + 0x68], eax
add esi, 0xfffffffe
jmp 0x47868c
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 0x478334
xor eax, eax
add ecx, edx
test esi, esi
js 0x478322
jmp 0x478310
mov dl, byte [ecx + eax]
or byte [esp + eax + 0xd8], dl
inc eax
cmp eax, 0x20
jl 0x478310
jmp 0x478334
mov dl, byte [ecx + eax]
not dl
and byte [esp + eax + 0xd8], dl
inc eax
cmp eax, 0x20
jl 0x478322
test esi, esi
jns 0x47833a
neg esi
cmp esi, 1
jne 0x478349
and byte [esp + 0xd9], 0xc3
jmp 0x478356
cmp esi, 2
jne 0x478356
and byte [esp + 0xe3], 0x7f
xor eax, eax
cmp dword [esp + 0x40], eax
je 0x478390
mov edi, edi
mov cl, byte [esp + eax + 0xd8]
not cl
or byte [esp + eax + 0x74], cl
inc eax
cmp eax, 0x20
jl 0x478360
mov esi, dword [esp + 0x64]
add esi, 2
mov dword [esp + 0x1c], 0xa
jmp 0x47868c
mov dl, byte [esp + eax + 0xd8]
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x478390
mov esi, dword [esp + 0x64]
add esi, 2
mov dword [esp + 0x1c], 0xa
jmp 0x47868c
cmp edi, 0x5c
jne 0x478405
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.004753f0
add esp, 0x10
cmp dword [ebx], 0
mov edi, eax
jne 0x47b65a
mov esi, edi
neg esi
cmp esi, 5
jne 0x478490
lea edi, [esi + 3]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov ebx, 0x5c
cmp word [esi + 2], bx
jne 0x478981
mov eax, 0x45
cmp word [esi + 4], ax
jne 0x47842e
add esi, 4
xor edx, edx
mov dword [esp + 0x10], esi
cmp word [esi + 2], bx
je 0x478414
mov dword [esp + 0x50], edx
mov ecx, esi
mov dword [esp + 0x3c], ecx
cmp edi, 0xd
je 0x478442
cmp edi, 0xa
jne 0x478452
mov eax, dword [esp + 0x11c]
or dword [eax + 0x4c], 0x20
mov eax, 0x45
test edx, edx
jne 0x478c87
cmp word [esi + 2], 0x2d
jne 0x478c87
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
jne 0x4789c0
cmp word [esi + 2], ax
jne 0x47898b
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
je 0x478475
jmp 0x4789c0
cmp esi, 0x1a
jne 0x4784bc
mov esi, dword [esp + 0x10]
cmp word [esi + 2], 0x5c
jne 0x4784af
cmp word [esi + 4], 0x45
jne 0x4784af
add esi, 4
jmp 0x47868c
mov dword [esp + 0x50], 1
jmp 0x47868c
cmp esi, 0x19
je 0x478688
test edi, edi
jns 0x4783fd
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.0x4784f3.12
movzx ecx, byte [ecx + 0x47b75c]
jmp dword [ecx*4 + 0x47b728]
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 0x47868c
xor ecx, ecx
nop
mov dl, byte [eax + ecx + 0x40]
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x478520
jmp 0x478688
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 0x478540
jmp 0x478688
xor ecx, ecx
jmp 0x478560
mov dl, byte [eax + ecx + 0xa0]
or byte [esp + ecx + 0x74], dl
inc ecx
cmp ecx, 0x20
jl 0x478560
jmp 0x478688
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 0x478580
jmp 0x478688
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 0x4785b0
jmp 0x478688
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 0x4785d4
or byte [esp + 0x75], 8
jmp 0x478688
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.00487a80
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x180e
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2000
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x200a
call fcn.00487a80
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x202f
call fcn.00487a80
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x205f
call fcn.00487a80
add ebp, eax
mov byte [ebp], 1
inc ebp
mov eax, ebp
mov edx, 0x3000
call fcn.00487a80
add ebp, eax
mov esi, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x10], esi
movzx edi, word [esi]
test edi, edi
jne 0x4786bc
mov eax, dword [esp + 0x68]
test eax, eax
je 0x47b2e0
lea esi, [eax + 2]
mov dword [esp + 0x68], edi
mov dword [esp + 0x10], esi
movzx edi, word [esi]
test edi, edi
je 0x47b2e0
cmp edi, 0x5d
jne 0x478180
cmp dword [esp + 0x50], 0
jne 0x478180
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x4c]
cmp esi, 1
jne 0x478de4
cmp dword [esp + 0x28], 0
jne 0x478de4
mov ecx, dword [esp + 0x20]
test edx, edx
je 0x478700
cmp ecx, 0x80
jge 0x478de4
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
test edx, edx
je 0x478dd7
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x478720
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 0x477af3
xor eax, eax
mov ecx, eax
dec ecx
mov edx, 0xff
je 0x478780
sub ecx, 3
je 0x478779
sub ecx, 0x10
jne 0x478785
mov edx, 0xfe
jmp 0x478785
mov edx, 0xfd
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x478765
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x100
mov dword [esp + 0x28], 1
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x167f
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x1681
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x180d
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x180f
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x1fff
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x200b
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x202e
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2030
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x205e
call fcn.00487a80
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x2060
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x2fff
call fcn.00487a80
mov edx, 0x3001
add ebp, eax
mov byte [ebp], 2
inc ebp
mov eax, ebp
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, SysReAllocString
jmp 0x478681
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.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x2029
jmp 0x478681
xor eax, eax
mov ecx, eax
dec ecx
mov edx, 0xff
je 0x4788c7
sub ecx, 0xf
jne 0x4788cc
mov edx, 0xdf
jmp 0x4788cc
mov edx, 0xc3
or byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x20
jl 0x4788b1
mov byte [ebp], 2
inc ebp
mov eax, ebp
mov edx, 0x100
mov dword [esp + 0x28], 1
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, 0x2027
call fcn.00487a80
mov edx, 0x2029
jmp 0x478860
push ebx
lea ecx, [esp + 0xcc]
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xd8]
call fcn.00475800
add esp, 0xc
test eax, eax
js 0x47b65a
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 0x478688
test byte [esp + 0x30], 0x40
mov esi, dword [esp + 0x10]
jne 0x47b2a1
sub dword [esp + 0x1c], edx
movzx edi, word [esi]
jmp 0x478401
mov eax, 0x45
jmp 0x478432
cmp word [esi], bx
jne 0x4789c0
cmp word [esi + 2], 0x51
jne 0x4789c0
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
jne 0x4789b7
cmp word [esi + 2], ax
jne 0x4789b7
add esi, 4
mov dword [esp + 0x10], esi
cmp word [esi], bx
je 0x478990
jmp 0x4789c0
mov edx, 1
mov dword [esp + 0x50], edx
movzx eax, word [esi]
test ax, ax
je 0x478c81
test edx, edx
jne 0x4789d9
cmp eax, 0x5d
je 0x478c81
mov ebx, eax
lea ecx, [ebx - 0xd800]
cmp ecx, 0x3ff
ja 0x478a0d
movzx eax, word [esi + 2]
lea edx, [eax - 0xdc00]
cmp edx, 0x3ff
ja 0x478a0d
add ebx, 0xffff2809
shl ebx, 0xa
add ebx, eax
add esi, 2
mov dword [esp + 0x10], esi
cmp dword [esp + 0x50], 0
jne 0x478a62
cmp ebx, 0x5c
jne 0x478a62
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.004753f0
add esp, 0x10
cmp dword [esi], 0
mov ebx, eax
jne 0x47b65a
test ebx, ebx
jns 0x478a5e
cmp ebx, 0xfffffffb
jne 0x478b08
mov ebx, 8
mov esi, dword [esp + 0x10]
cmp ebx, edi
jl 0x47b2bd
je 0x478c87
cmp ebx, 0xd
je 0x478a7a
cmp ebx, 0xa
jne 0x478a85
mov eax, dword [esp + 0x11c]
or dword [eax + 0x4c], 0x20
cmp ebx, 0xff
jg 0x478aa7
mov eax, dword [esp + 0x30]
and eax, 1
mov dword [esp + 0x3c], eax
je 0x478c05
cmp ebx, 0x7f
jle 0x478c05
test byte [esp + 0x30], 1
mov dword [esp + 0x28], 1
je 0x478b77
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.00476c20
add esp, 8
test eax, eax
je 0x478b77
jmp 0x478af0
mov edx, dword [esp + 0xb4]
mov esi, dword [esp + 0xac]
cmp edx, edi
jb 0x478b11
cmp esi, ebx
jbe 0x478b4f
jmp 0x478b20
mov esi, dword [esp + 0x3c]
jmp 0x478c83
lea eax, [edi - 1]
cmp esi, eax
jb 0x478b1c
mov edi, edx
jmp 0x478b4f
cmp esi, ebx
jbe 0x478b2b
lea ecx, [ebx + 1]
cmp edx, ecx
ja 0x478b2b
mov ebx, esi
jmp 0x478b4f
cmp edx, esi
jne 0x478b36
mov byte [ebp], 1
inc ebp
jmp 0x478b44
mov byte [ebp], 2
inc ebp
mov eax, ebp
call fcn.00487a80
add ebp, eax
mov eax, ebp
mov edx, esi
call fcn.00487a80
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.00476c20
add esp, 8
test eax, eax
jne 0x478af0
mov byte [ebp], 2
mov edx, edi
inc ebp
mov dword [esp + 0x40], edx
xor ecx, ecx
cmp edi, dword [ecx*4 + 0x4b4624]
jle 0x478b93
inc ecx
cmp ecx, 6
jl 0x478b84
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478bb9
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 0x478ba0
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
mov byte [eax], cl
xor ecx, ecx
cmp ebx, dword [ecx*4 + 0x4b4624]
jle 0x478bd5
inc ecx
cmp ecx, 6
jl 0x478bc6
lea ebp, [ecx + ebp + 1]
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478bf4
mov dl, bl
and dl, 0x3f
or dl, 0x80
mov byte [eax], dl
dec esi
dec eax
sar ebx, 6
test esi, esi
jg 0x478be1
mov cl, byte [ecx*4 + 0x4b4640]
or cl, bl
mov byte [eax], cl
inc ebp
jmp 0x478688
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 0x47868c
cmp edi, ebx
jg 0x47868c
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 0x478c77
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 0x478c30
jmp 0x47868c
mov esi, ecx
mov dword [esp + 0x10], esi
cmp edi, 0xff
jg 0x478ca5
mov ebx, dword [esp + 0x30]
and ebx, 1
je 0x478d84
cmp edi, 0x7f
jle 0x478d84
mov byte [ebp], 1
inc ebp
mov dword [esp + 0x28], 1
mov edx, edi
xor ecx, ecx
cmp edi, dword [ecx*4 + 0x4b4624]
jle 0x478cc5
inc ecx
cmp ecx, 6
jl 0x478cb6
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478ce3
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 0x478cd0
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
inc ebp
test byte [esp + 0x30], 1
mov byte [eax], cl
je 0x478688
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 0x478d1d
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 0x478688
mov byte [ebp], 1
inc ebp
xor ecx, ecx
nop
cmp edx, dword [ecx*4 + 0x4b4624]
jle 0x478d4f
inc ecx
cmp ecx, 6
jl 0x478d40
add ebp, ecx
mov eax, ebp
mov esi, ecx
test ecx, ecx
jle 0x478d73
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 0x478d60
mov cl, byte [ecx*4 + 0x4b4640]
or cl, dl
mov byte [eax], cl
inc ebp
jmp 0x478688
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 0x478dca
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 0x47868c
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
jmp 0x477cf4
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x478df4
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 0x478e89
cmp dword [esp + 0x24], 0
je 0x478e1c
test dword [esp + 0x30], 0x20000000
je 0x478e89
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 0x478e6b
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.00488d70
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 0x478e71
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 0x47873f
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 0x478ec8
cmp dword [esp + 0x120], 0
jne 0x478ed5
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 0x478eb5
add eax, 0x20
jmp 0x47873b
mov ecx, 8
lea esi, [esp + 0x74]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
add eax, 0x20
jmp 0x47873b
cmp dword [esp + 0x20], 0
je case.0x477f0c.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.00475920
add esp, 0xc
cmp dword [edi], 0
mov esi, eax
mov dword [esp + 0x10], esi
jne 0x47b65e
mov eax, dword [esp + 0x48]
jmp 0x478f41
mov dword [esp + 0x2c], 0xffffffff
jmp 0x478f3b
mov eax, 1
mov dword [esp + 0x2c], 0xffffffff
jmp 0x478f3d
mov dword [esp + 0x2c], 1
xor eax, eax
mov dword [esp + 0x48], eax
test ebp, ebp
je 0x47b303
test eax, eax
jne 0x478f5d
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 0x478f98
xor ebx, ebx
add esi, 2
mov dword [esp + 0x28], 1
mov dword [esp + 0x10], esi
jmp 0x478fb4
cmp eax, 0x3f
jne 0x478fad
mov ebx, dword [esp + 0xb8]
add esi, 2
mov dword [esp + 0x10], esi
jmp 0x478fb4
mov ebx, dword [esp + 0xb0]
cmp byte [ebp], 0x6f
mov dword [esp + 0x1c], ebx
jne 0x479040
push 3
lea edx, [ebp + 3]
push ebp
push edx
call fcn.00488d70
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 0x479038
mov edi, dword [esp + 0x11c]
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x24]
add eax, 2
cmp esi, eax
jb 0x479038
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 0x479038
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 0x479681
cmp cl, 0x1e
je 0x479681
cmp cl, 0x1f
je 0x479652
cmp cl, 0x20
je 0x479652
cmp cl, 0x17
jae 0x4790ed
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 0x4790c3
test ecx, ecx
jns 0x4790c3
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x30]
push edx
push eax
add esi, 2
push esi
push ebp
call fcn.00476e60
add esp, 0x10
test eax, eax
je 0x4790b7
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 0x479715
cmp dl, 0xf
je 0x479715
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
jmp 0x479725
cmp cl, 0x6a
je 0x4795b6
cmp cl, 0x6b
je 0x4795b6
cmp cl, 0x6c
je 0x4795b6
cmp cl, 0x6d
je 0x4795b6
cmp cl, 0x6e
je 0x4795b6
cmp cl, 0x77
jb 0x47958a
cmp cl, 0x80
ja 0x47958a
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 0x47914b
cmp byte [ebp + 3], 0x8a
je 0x479aac
cmp cl, 0x7b
jae 0x479172
cmp dword [esp + 0x48], eax
jg 0x479aac
mov eax, dword [esp + 0x2c]
test eax, eax
js 0x479167
cmp eax, 1
jle 0x479176
mov eax, 1
mov dword [esp + 0x2c], eax
jmp 0x479176
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x479238
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 0x4791ed
push 1
push ebp
call fcn.00476a60
push ebx
lea esi, [ebp + 1]
push ebp
push esi
call fcn.00488d70
inc dword [esp + 0x30]
add esp, 0x1c
cmp dword [esp + 0x2c], 0
jne 0x4791c5
mov byte [ebp], 0x9a
jmp 0x479aa8
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 0x4792a8
push 4
push ebp
call fcn.00476a60
push ebx
lea eax, [ebp + 4]
push ebp
push eax
call fcn.00488d70
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 0x4792a8
cmp ecx, 1
jle 0x479291
mov edi, dword [esp + 0x120]
test edi, edi
je 0x479311
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 0x47b203
mov eax, dword [edi]
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, ecx
jl 0x47b203
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 0x4792aa
sub ecx, dword [esp + 0x48]
mov dword [esp + 0x2c], ecx
test ecx, ecx
js 0x4794f2
cmp dword [esp + 0x120], 0
je 0x4793a7
test ecx, ecx
jle 0x4793a7
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 0x47b16e
mov edi, dword [esp + 0x120]
mov eax, dword [edi]
mov ebx, 0x7fffffeb
sub ebx, eax
cmp ebx, ecx
jl 0x47b16e
add eax, ecx
mov dword [edi], eax
jmp 0x479499
cmp dword [esp + 0xa0], 0
je 0x47932a
cmp dword [esp + 0x44], 0
jge 0x47932a
mov eax, dword [esp + 0x34]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x48], 1
mov edi, dword [esp + 0x11c]
jle 0x479298
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.004903a0
mov eax, dword [esp + 0x68]
add esp, 0xc
cmp eax, esi
jae 0x47938c
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 0x479360
add dword [esp + 0x14], ebx
dec dword [esp + 0x40]
mov dword [esp + 0x5c], esi
jne 0x479345
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
jmp 0x479298
dec ecx
mov dword [esp + 0x20], ecx
js 0x479499
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 0x479406
mov edx, dword [esp + 0x24]
mov byte [eax], 0x7c
inc eax
test edx, edx
jne 0x4793ed
xor ecx, ecx
jmp 0x4793f1
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.004903a0
mov eax, dword [esp + 0x68]
add esp, 0xc
cmp eax, esi
jae 0x47947f
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 0x479440
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 0x479440
mov esi, dword [esp + 0x40]
add dword [esp + 0x14], ebx
dec dword [esp + 0x20]
mov dword [esp + 0x5c], esi
jns 0x4793c0
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
test edi, edi
je 0x479928
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 0x4794cc
xor edi, edi
jmp 0x4794ce
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 0x4794b0
mov dword [esp + 0x14], ecx
jmp 0x479920
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 0x479519
cmp dword [esp + 0x28], 0
je 0x479532
mov byte [ebx], 0x7c
cmp dword [esp + 0x28], 0
je 0x47953f
inc byte [ebx]
mov eax, dword [esp + 0x20]
mov byte [esi], 0x75
test eax, eax
je 0x479547
mov byte [eax], 0x8d
jmp 0x479547
mov al, byte [esp + 0x1c]
add al, 0x73
mov byte [esi], al
jmp 0x479aa8
mov al, byte [esp + 0x1c]
add al, 0x73
mov byte [esi], al
cmp dword [esp + 0x120], 0
jne 0x479aa8
mov ebp, ebx
push edi
push 1
push esi
push ebp
call fcn.00476370
add esp, 0x10
test eax, eax
jne 0x479582
movzx edx, byte [ebp + 1]
movzx eax, byte [ebp + 2]
shl edx, 8
or edx, eax
add ebp, edx
cmp byte [ebp], 0x71
je 0x479557
jmp 0x479aa8
add byte [ebx], 5
jmp 0x479aa8
cmp cl, 0x96
je 0x479aac
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 0x4795c7
mov dword [esp + 0x14], ebp
jmp 0x479aac
mov edx, dword [esp + 0x48]
test edx, edx
jne 0x4795e7
cmp ecx, 0xffffffff
jne 0x479604
mov eax, dword [esp + 0x14]
add bl, 0x62
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x479920
cmp edx, 1
jne 0x47961c
cmp ecx, 0xffffffff
jne 0x47961c
mov eax, dword [esp + 0x14]
add bl, 0x64
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x479920
cmp ecx, 1
jne 0x47961c
mov eax, dword [esp + 0x14]
add bl, 0x66
mov byte [eax], bl
inc eax
mov dword [esp + 0x14], eax
jmp 0x479920
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 0x47963b
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 0x479920
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 0x4790bf
mov ecx, dword [esp + 0x2c]
jmp 0x47908b
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 0x4796e7
mov dl, byte [edi - 1]
lea ecx, [edi - 1]
and dl, 0xc0
cmp dl, 0x80
jne 0x4796ba
lea ebx, [ebx]
mov al, byte [ecx - 1]
dec ecx
and al, 0xc0
cmp al, 0x80
je 0x4796b0
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.004903a0
mov eax, dword [esp + 0x24]
add esp, 0xc
or dword [esp + 0x1c], 0x80
jmp 0x479080
cmp dword [esp + 0x48], 1
movzx edx, cl
mov dword [esp + 0x1c], edx
jle 0x479080
mov ecx, dword [esp + 0x11c]
mov ecx, dword [ecx + 0x50]
or ecx, edx
or ecx, dword [esp + 0x9c]
mov dword [esp + 0x44], ecx
jmp 0x479080
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 0x479aac
add ebx, eax
cmp dword [esp + 0x48], 0
jne 0x479785
cmp ecx, 0xffffffff
jne 0x479753
add bl, 0x21
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x4798d7
cmp ecx, 1
jne 0x479768
add bl, 0x25
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x4798d7
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 0x4798d7
cmp dword [esp + 0x48], 1
jne 0x4797cf
cmp ecx, 0xffffffff
jne 0x4797a1
add bl, 0x23
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x4798d7
mov dword [esp + 0x14], edi
cmp ecx, 1
je 0x479aac
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 0x4798d7
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 0x47984b
mov eax, dword [esp + 0x1c]
cmp eax, 0x80
jl 0x479822
mov esi, eax
and esi, 7
push esi
lea eax, [esp + 0xc0]
push eax
push ebp
call fcn.004903a0
add ebp, esi
add bl, 0x21
add esp, 0xc
mov byte [ebp], bl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x4798d7
mov byte [ebp], al
mov eax, dword [esp + 0x24]
inc ebp
test eax, eax
js 0x47983b
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 0x4798d7
cmp ecx, eax
je 0x4798d7
cmp dword [esp + 0x1c], 0x80
mov esi, dword [esp + 0x14]
jl 0x479886
mov edi, dword [esp + 0x1c]
and edi, 7
push edi
lea edx, [esp + 0xc0]
push edx
push esi
call fcn.004903a0
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x38]
add esp, 0xc
add esi, edi
jmp 0x479894
mov dl, byte [esp + 0x1c]
inc dword [esp + 0x14]
mov byte [esi], dl
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x24], 0
jl 0x4798ad
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 0x4798c0
add bl, 0x25
mov byte [esi], bl
inc esi
jmp 0x4798d3
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 0x479901
mov esi, eax
and esi, 7
push esi
lea ecx, [esp + 0xc0]
push ecx
push edi
call fcn.004903a0
add esp, 0xc
add edi, esi
jmp 0x479904
mov byte [edi], al
inc edi
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], edi
test eax, eax
js 0x479920
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 0x479aac
mov al, byte [edx]
cmp al, 0x5d
jne 0x479957
mov al, byte [edx + 3]
cmp al, 0x10
je 0x47994c
cmp al, 0xf
je 0x47994c
xor eax, eax
lea edx, [edx + eax + 4]
jmp 0x479985
mov eax, 2
lea edx, [edx + eax + 4]
jmp 0x479985
cmp al, 0x29
je 0x47995f
cmp al, 0x43
jne 0x479989
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 0x479989
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 0x479aac
movzx eax, byte [edx]
add eax, 0xffffffdf
cmp eax, 0x3a
ja case.0x4799ad.34
movzx eax, byte [eax + 0x47b7d0]
jmp dword [eax*4 + 0x47b77c]
mov byte [edx], 0x2a
jmp 0x479aa8
mov byte [edx], 0x2b
jmp 0x479aa8
mov byte [edx], 0x2c
jmp 0x479aa8
mov byte [edx], 0x2d
jmp 0x479aa8
mov byte [edx], 0x37
jmp 0x479aa8
mov byte [edx], 0x38
jmp 0x479aa8
mov byte [edx], 0x39
jmp 0x479aa8
mov byte [edx], 0x3a
jmp 0x479aa8
mov byte [edx], 0x44
jmp 0x479aa8
mov byte [edx], 0x45
jmp 0x479aa8
mov byte [edx], 0x46
jmp 0x479aa8
mov byte [edx], 0x47
jmp 0x479aa8
mov byte [edx], 0x51
jmp 0x479aa8
mov byte [edx], 0x52
jmp 0x479aa8
mov byte [edx], 0x53
jmp 0x479aa8
mov byte [edx], 0x54
jmp 0x479aa8
mov byte [edx], 0x5e
jmp 0x479aa8
mov byte [edx], 0x5f
jmp 0x479aa8
mov byte [edx], 0x60
jmp 0x479aa8
mov byte [edx], 0x61
jmp 0x479aa8
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.00476a60
mov eax, dword [esp + 0x48]
push ebx
push eax
add eax, 3
push eax
call fcn.00488d70
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 0x477af3
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 0x479d20
lea ecx, [esi + 2]
mov dword [esp + 0x24], ecx
movzx ecx, word [ecx]
cmp ecx, 0x7f
ja 0x479b37
mov edx, ecx
mov ecx, dword [edi + 0xc]
test byte [edx + ecx], 2
jne 0x479b45
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
cmp word [ecx], 0x3a
jne 0x479d20
xor edx, edx
mov dword [esp + 0x28], edx
mov ebp, 0x4b56e0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edx
jmp 0x479b60
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
ja 0x479b78
mov ecx, dword [edi + 0xc]
test byte [eax + ecx], 2
jne 0x479b60
mov ecx, esi
sub ecx, dword [esp + 0x24]
sar ecx, 1
cmp word [esi], 0x3a
mov dword [esp + 0x40], ecx
jne 0x479bc1
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov edx, esi
mov dword [esp + 0x1c], edx
test ax, ax
je 0x479bb5
nop
cmp ax, 0x29
je 0x479bb5
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
jne 0x479ba0
mov eax, esi
sub eax, edx
sar eax, 1
mov dword [esp + 0x28], eax
xor edx, edx
cmp word [esi], 0x29
jne 0x47b326
mov dword [esp + 0x20], edx
mov esi, 0x4b5738
cmp ecx, dword [esi]
jne 0x479bf3
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
push edx
push ebp
push eax
call fcn.00489df2
add esp, 0xc
test eax, eax
je 0x479c1a
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 0x479bd4
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x3c
jmp 0x47b65a
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 0x479c78
cmp dword [esp + 0x28], 0
jne 0x47b349
mov eax, dword [edi + 0x20]
mov dword [edi + 0x54], 1
test eax, eax
je 0x479c68
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 0x479c50
cmp dword [edi + 0x44], 0
setg al
add al, 0x97
mov byte [ebx], al
jmp 0x479d0d
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x479cba
test edx, edx
js 0x47b35b
mov al, dl
mov byte [ebx], al
inc ebx
mov dword [esp + 0x14], ebx
cmp al, 0x93
jne 0x479d12
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 0x479d0e
cmp dword [eax + 0x4b5740], 0
jl 0x47b36d
mov al, byte [eax + 0x4b5740]
mov byte [ebx], al
inc ebx
cmp al, 0x94
jne 0x479cf3
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 0x479d00
mov byte [ebx], cl
inc ebx
mov dword [esp + 0x14], ebx
cmp ebp, 9
jge 0x479c08
jmp 0x478743
cmp eax, 0x3f
jne 0x47a5be
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
lea eax, [ecx - 0x21]
cmp eax, 0x5b
ja case.0x479d46.34
movzx edx, byte [eax + 0x47b848]
jmp dword [edx*4 + 0x47b80c]
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
je 0x479d75
lea esp, [esp]
cmp ax, 0x29
je 0x479d98
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
jne 0x479d60
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 0x479d75
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477af3
mov dword [esp + 0x40], 1
jmp case.0x479d46.58
cmp word [esi + 2], 0x3f
mov dword [esp + 0x1c], 0x80
jne 0x479df1
movzx eax, word [esi + 4]
cmp eax, 0x3d
je 0x47a99e
cmp eax, 0x21
je 0x47a99e
cmp eax, 0x3c
je 0x47a99e
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 0x479e2d
cmp word [esi + 4], 0x26
lea ecx, [esi + 4]
jne 0x479e2d
mov dword [esp + 0x10], ecx
mov byte [ebx + 3], 0x88
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
jmp 0x479e75
cmp eax, 0x3c
jne 0x479e43
add esi, 2
mov dword [esp + 0x18], 0x3e
mov dword [esp + 0x10], esi
jmp 0x479e75
cmp eax, 0x27
jne 0x479e55
add esi, 2
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
jmp 0x479e75
mov dword [esp + 0x18], 0
cmp eax, 0x2d
je 0x479e67
cmp eax, 0x2b
jne 0x479e75
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 0x47b427
mov edx, dword [edi + 0xc]
test byte [eax + edx], 0x10
je 0x47b427
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 0x479eee
jmp 0x479eb0
movzx ebp, ax
test byte [edx + ebp], 0x10
je 0x479eee
test ecx, ecx
js 0x479edf
call fcn.00475330
test eax, eax
je 0x479ed3
lea eax, [ecx + ecx*4]
lea ecx, [ebp + eax*2 - 0x30]
mov dword [esp + 0x24], ecx
jmp 0x479edb
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 0x479eb0
mov ebp, esi
sub ebp, dword [esp + 0x28]
sar ebp, 1
cmp dword [esp + 0x18], 0
jle 0x479f11
movzx edx, word [esi]
add esi, 2
mov dword [esp + 0x10], esi
cmp edx, dword [esp + 0x18]
jne 0x47b37f
mov ax, word [esi]
add esi, 2
mov dword [esp + 0x10], esi
cmp ax, 0x29
jne 0x47b37f
cmp dword [esp + 0x120], 0
jne 0x47a99e
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x479f7a
test ecx, ecx
jle 0x47b3a5
cmp eax, 0x2d
jne 0x479f56
mov edx, dword [edi + 0x34]
sub edx, ecx
inc edx
mov dword [esp + 0x24], edx
mov ecx, edx
jmp 0x479f59
add ecx, dword [edi + 0x34]
test ecx, ecx
jle 0x47b3c8
cmp ecx, dword [edi + 0x38]
jg 0x47b3c8
mov eax, ecx
sar eax, 8
mov byte [ebx + 4], al
mov byte [ebx + 5], cl
jmp 0x47a99e
mov eax, edi
mov esi, dword [eax + 0x28]
xor edi, edi
cmp edi, dword [eax + 0x2c]
jge 0x479fe1
mov edx, dword [esp + 0x28]
push ebp
lea ecx, [esi + 4]
push ecx
push edx
call fcn.00489df2
add esp, 0xc
test eax, eax
je 0x479faf
mov eax, dword [esp + 0x11c]
mov ecx, dword [eax + 0x30]
inc edi
lea esi, [esi + ecx*2]
cmp edi, dword [eax + 0x2c]
jl 0x479f86
mov eax, dword [esp + 0x11c]
cmp edi, dword [eax + 0x2c]
jge 0x479fe1
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 0x47a99e
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.00475e60
add esp, 4
test eax, eax
jle 0x47a020
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 0x47a99e
cmp dword [esp + 0x18], 0
jne 0x47b3eb
mov edi, dword [esp + 0x28]
cmp word [edi], 0x52
jne 0x47a089
xor ecx, ecx
lea edx, [ecx + 1]
cmp ebp, edx
jle 0x47a063
mov edi, edi
movzx esi, word [edi + edx*2]
mov eax, esi
call fcn.00475330
test eax, eax
je 0x47b3fd
inc edx
lea eax, [ecx + ecx*4]
lea ecx, [esi + eax*2 - 0x30]
cmp edx, ebp
jl 0x47a040
test ecx, ecx
jne 0x47a068
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 0x47a99e
cmp ebp, 6
jne 0x47a0ba
push ebp
push str.DEFINE
push edi
call fcn.00489df2
add esp, 0xc
test eax, eax
jne 0x47a0ba
mov eax, dword [esp + 0x14]
mov byte [eax + 3], 0x8a
mov dword [esp + 0x20], 1
mov ebx, eax
mov edi, esi
jmp 0x47a99e
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x47b40f
cmp eax, dword [esi + 0x38]
jg 0x47b40f
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 0x47a99e
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x77
jmp 0x47a997
add esi, 2
mov dword [esp + 0x10], esi
cmp word [esi], 0x29
jne 0x47a119
mov byte [ebx], 0x96
inc ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
jmp 0x478743
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x78
jmp 0x47a99e
movzx edx, word [esi + 2]
mov eax, edx
cmp eax, 0x21
je 0x47a217
cmp eax, 0x3d
je 0x47a204
cmp edx, 0x7f
ja 0x47b44d
mov edx, dword [edi + 0xc]
test byte [eax + edx], 0x10
je 0x47b44d
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 0x47a199
mov edx, dword [edi + 0xc]
movzx eax, ax
test byte [eax + edx], 0x10
je 0x47a199
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
jbe 0x47a181
mov eax, esi
sub eax, ecx
sar eax, 1
cmp dword [esp + 0x120], 0
mov dword [esp + 0x20], eax
je 0x47a3a1
movzx ecx, word [esi]
cmp ecx, ebp
jne 0x47b4b9
cmp dword [edi + 0x2c], 0x2710
jge 0x47b4dc
lea ecx, [eax + 3]
cmp ecx, dword [edi + 0x30]
jle 0x47a56f
mov dword [edi + 0x30], ecx
cmp eax, 0x20
jle 0x47a56f
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 0x47a99a
inc dword [edi + 0x44]
mov dword [esp + 0x1c], 0x7a
add esi, 4
jmp 0x47a99a
mov dword [esp + 0x1c], 0x7b
jmp 0x47a997
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.00475330
test eax, eax
je 0x47a293
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.00475330
test eax, eax
jne 0x47a270
mov dword [esp + 0x20], edx
movzx eax, word [esi]
cmp eax, 0x29
je 0x47a2fe
test ax, ax
je 0x47b473
cmp eax, 0x3a
je 0x47a2b1
mov esi, dword [esp + 0x64]
mov dword [esp + 0x20], ebp
lea ecx, [esi + 2]
mov dword [esp + 0x64], ecx
jmp 0x47a2c0
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
test ax, ax
je 0x47b473
cmp eax, 0x29
jne 0x47a2c0
cmp word [esi], bp
je 0x47b473
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 0x47b473
mov eax, dword [esp + 0x20]
cmp eax, 0xff
jg 0x47b496
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 0x478743
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
cmp ecx, 0x3d
je 0x47a38b
cmp ecx, 0x3e
je 0x47a38b
cmp ecx, 0x3c
je case.0x479d46.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 0x47ad04
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 0x47a4c8
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x28]
add ecx, ecx
lea edx, [edi + 4]
cmp ecx, 4
jb 0x47a3ea
mov eax, dword [ebp]
cmp eax, dword [edx]
jne 0x47a3ee
sub ecx, 4
add edx, 4
add ebp, 4
cmp ecx, 4
jae 0x47a3d5
test ecx, ecx
je 0x47a43a
movzx eax, byte [ebp]
movzx edi, byte [edx]
sub eax, edi
jne 0x47a42a
cmp ecx, 1
jbe 0x47a436
movzx eax, byte [ebp + 1]
movzx edi, byte [edx + 1]
sub eax, edi
jne 0x47a42a
cmp ecx, 2
jbe 0x47a436
movzx eax, byte [ebp + 2]
movzx edi, byte [edx + 2]
sub eax, edi
jne 0x47a42a
cmp ecx, 3
jbe 0x47a436
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 0x47a43c
mov edi, dword [esp + 0x18]
xor eax, eax
mov edx, dword [esp + 0x11c]
mov ecx, dword [esp + 0x3c]
test eax, eax
jne 0x47a483
mov eax, dword [esp + 0x20]
cmp word [edi + eax*2 + 4], 0
jne 0x47a4a3
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 0x47a479
test dword [esp + 0x30], 0x80000
je 0x47b4ff
mov dword [esp + 0x14], 1
jmp 0x47a485
js 0x47a4a3
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 0x47a3c3
jmp 0x47a4c1
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.00488d70
mov esi, dword [esp + 0x1c]
add esp, 0xc
cmp dword [esp + 0x14], 0
jne 0x47a521
mov ecx, dword [esp + 0x11c]
mov eax, dword [ecx + 0x28]
xor edx, edx
mov dword [esp + 0x24], edx
cmp dword [ecx + 0x2c], edx
jle 0x47a521
lea ecx, [ecx]
cmp eax, edi
je 0x47a509
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 0x47b522
mov edx, dword [esp + 0x24]
jmp 0x47a511
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 0x47a4e0
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.004903a0
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 0x47a99e
mov ecx, 0x29
mov dword [esp + 0x20], 1
jmp 0x47ad04
add esi, 2
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], 0x29
jmp 0x47a7e3
test edx, 0x1000
je 0x47a579
mov dword [esp + 0x1c], 0x7c
jmp 0x47a99e
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.004753f0
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x118]
add esp, 0x10
cmp dword [eax], 0
jne 0x47b65a
mov eax, dword [esp + 0x1c]
xor edx, edx
cmp eax, edx
jge 0x477cf4
mov esi, eax
neg esi
cmp esi, 0x1a
jne 0x47a671
mov esi, dword [esp + 0x10]
cmp word [esi + 2], 0x5c
jne 0x47a651
cmp word [esi + 4], 0x45
jne 0x47a651
add esi, 4
add esi, 2
mov edx, edi
mov edi, dword [esp + 0xd4]
xor ecx, ecx
jmp 0x477af3
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
mov dword [esp + 0x50], 1
xor ecx, ecx
jmp 0x477af3
cmp esi, 0x19
je 0x47b12f
mov ecx, dword [esp + 0x34]
cmp ecx, 0xfffffffe
jne 0x47a694
cmp esi, 5
jle 0x47a694
cmp esi, 0x17
jge 0x47a694
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 0x47ac98
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 0x47a788
cmp eax, 0x2d
je 0x47a788
movzx ecx, word [esi + 2]
lea edx, [esi + 2]
mov dword [esp + 0x3c], 1
test cx, cx
je 0x47a742
movzx eax, cx
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x18]
je 0x47a742
mov eax, ecx
call fcn.00475330
test eax, eax
jne 0x47a721
mov dword [esp + 0x3c], eax
cmp cx, 0x7f
ja 0x47a742
mov ecx, edi
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x54]
test byte [ecx + eax], 0x10
je 0x47a742
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x47a705
movzx edx, word [edx]
cmp edx, dword [esp + 0x18]
je 0x47a770
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 0x477af3
cmp dword [esp + 0x3c], 0
jne 0x47a7dc
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], 1
jmp 0x47ad04
mov ax, word [esi + 4]
lea ecx, [esi + 4]
call fcn.00475330
test eax, eax
je 0x47a7b0
jmp 0x47a7a0
mov ax, word [ecx + 2]
add ecx, 2
call fcn.00475330
test eax, eax
jne 0x47a7a0
movzx ecx, word [ecx]
cmp ecx, edx
je 0x47a7dc
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 0x477af3
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov edx, ecx
cmp edx, 0x2b
jne 0x47a825
add esi, 2
mov dword [esp + 0x10], esi
mov ax, word [esi]
call fcn.00475330
test eax, eax
jne 0x47abf5
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 0x47abf5
mov ax, word [esi + 2]
call fcn.00475330
test eax, eax
jne 0x47abee
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 0x47a8cb
lea esp, [esp]
cmp cx, 0x3a
je 0x47a8c3
movzx ecx, cx
add esi, 2
sub ecx, 0x2d
mov dword [esp + 0x10], esi
cmp ecx, 0x4b
ja case.0x47a883.46
movzx ecx, byte [ecx + 0x47b8c8]
jmp dword [ecx*4 + 0x47b8a4]
lea eax, [esp + 0x24]
jmp 0x47a8bb
or dword [eax], 0x80000
or dword [edi + 0x4c], 0x10
jmp 0x47a8bb
or dword [eax], 1
jmp 0x47a8bb
or dword [eax], 2
jmp 0x47a8bb
or dword [eax], 4
jmp 0x47a8bb
or dword [eax], 8
jmp 0x47a8bb
or dword [eax], 0x200
jmp 0x47a8bb
or dword [eax], 0x40
movzx ecx, word [esi]
cmp ecx, 0x29
jne 0x47a860
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 0x47a988
mov eax, dword [edi + 0x14]
add eax, 3
cmp ebx, eax
jne 0x47a92f
mov eax, dword [esp + 0x120]
test eax, eax
je 0x47a8fb
cmp dword [eax], 6
jne 0x47a92f
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 0x477af3
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 0x477af3
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 0x47a9c3
cmp ecx, 0x7a
jne 0x47a9c8
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.0047b920
add esp, 0x34
test eax, eax
je 0x47b65a
mov edx, dword [esp + 0x1c]
lea ecx, [edx - 0x77]
cmp ecx, 3
ja 0x47aa4b
dec dword [edi + 0x44]
cmp edx, 0x80
jne 0x47aa90
test ebp, ebp
jne 0x47aa90
mov eax, ebx
xor ecx, ecx
jmp 0x47aa60
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 0x47aa60
cmp byte [ebx + 3], 0x8a
jne 0x47aaed
cmp ecx, 1
jg 0x47b56b
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 0x47b58f
test ebp, ebp
je 0x47ab10
mov eax, dword [ebp]
mov ecx, dword [esp + 0x6c]
mov edx, 0x7fffffeb
sub edx, eax
lea edi, [ecx - 6]
cmp edx, edi
jl 0x47b203
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 0x478743
cmp ecx, 2
jg 0x47b57d
cmp ecx, 1
jne 0x47aa90
or ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa8], eax
jmp 0x47aa9e
mov edi, dword [esp + 0x38]
mov dword [esp + 0x14], edi
cmp edx, 0x8a
je 0x479ac2
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 0x47abb9
cmp edi, 0xfffffffe
jne 0x47ab78
test eax, eax
js 0x47ab66
mov dword [esp + 0x34], eax
mov dword [esp + 0xa0], 1
mov dword [esp + 0x4c], 0xffffffff
jmp 0x47ab8d
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x4c], 0xffffffff
jmp 0x47ab8d
test eax, eax
js 0x47ab8d
test ecx, ecx
jns 0x47ab95
or eax, dword [esp + 0x3c]
mov ecx, eax
mov dword [esp + 0x98], ecx
test ecx, ecx
js 0x479ac2
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 0x477af3
cmp edx, 0x77
jne 0x479ac2
test ecx, ecx
js 0x479ac2
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 0x477af3
add esi, 2
mov dword [esp + 0x10], esi
movzx ecx, word [esi]
mov eax, ecx
xor ebx, ebx
call fcn.00475330
test eax, eax
je 0x47ac24
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.00475330
test eax, eax
jne 0x47ac05
movzx eax, word [esi]
cmp eax, dword [esp + 0x18]
jne 0x47b5b2
cmp edx, 0x2d
jne 0x47ac78
test ebx, ebx
je 0x47b5d5
mov ecx, dword [esp + 0x11c]
mov edx, dword [ecx + 0x34]
sub edx, ebx
lea ebx, [edx + 1]
test ebx, ebx
jg 0x47ae1f
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 0x47ae1f
test ebx, ebx
je 0x47b3a5
mov eax, dword [esp + 0x11c]
add ebx, dword [eax + 0x34]
jmp 0x47ae1f
cmp esi, 0x1c
jne 0x47af2c
mov esi, dword [esp + 0x10]
movzx eax, word [esi + 2]
cmp eax, 0x3c
je 0x47acdd
cmp eax, 0x27
je 0x47acdd
cmp eax, 0x7b
je 0x47acdd
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 0x477af3
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
mov dword [esp + 0x20], edx
cmp eax, 0x3c
jne 0x47acf5
lea ecx, [eax + 2]
jmp 0x47ad04
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 0x47ad38
mov edx, dword [edi + 0xc]
lea esp, [esp]
movzx eax, ax
test byte [eax + edx], 0x10
je 0x47ad38
add esi, 2
mov dword [esp + 0x10], esi
movzx eax, word [esi]
cmp eax, 0x7f
jbe 0x47ad20
mov ebx, esi
sub ebx, ebp
sar ebx, 1
cmp dword [esp + 0x120], 0
je 0x47ad9f
test ebx, ebx
je 0x47b5f8
movzx edx, word [esi]
cmp edx, ecx
jne 0x47b61b
cmp ebx, 0x20
jg 0x47a1e1
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.00475e60
mov edx, dword [esp + 0x58]
mov ebx, eax
add esp, 4
mov dword [ebp + 0x1c], edx
test ebx, ebx
jns 0x47ae14
xor ebx, ebx
jmp 0x47ae14
mov esi, dword [edi + 0x28]
xor ebp, ebp
cmp ebp, dword [edi + 0x2c]
jge 0x47adec
lea esp, [esp]
mov ecx, dword [esp + 0x28]
push ebx
lea eax, [esi + 4]
push eax
push ecx
call fcn.00489df2
add esp, 0xc
test eax, eax
jne 0x47adcd
cmp word [esi + ebx*2 + 4], ax
je 0x47add9
mov edx, dword [edi + 0x30]
inc ebp
lea esi, [esi + edx*2]
cmp ebp, dword [edi + 0x2c]
jl 0x47adb0
cmp ebp, dword [edi + 0x2c]
jge 0x47adec
movzx eax, word [esi]
movzx ebx, word [esi + 2]
shl eax, 8
or ebx, eax
jmp 0x47ae14
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.00475e60
mov ebx, eax
add esp, 4
test ebx, ebx
jle 0x47b63e
cmp dword [esp + 0x20], 0
je 0x47af3e
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 0x47aef2
mov byte [ecx], 0
test ebx, ebx
je 0x47ae5e
mov eax, edx
mov eax, dword [eax + 0x14]
mov esi, ebx
call fcn.00476200
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
test eax, eax
jne 0x47aeaf
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x11c]
shr edi, 3
and edi, 1
push eax
call fcn.00475e60
add esp, 4
test eax, eax
js 0x47b3eb
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 0x47aeea
movzx edx, byte [eax + 1]
movzx esi, byte [eax + 2]
shl edx, 8
or edx, esi
jne 0x47aef2
cmp dword [esp + 0x118], edx
jg 0x47aef2
mov edi, dword [esp + 0x11c]
mov ebx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x118]
call fcn.00476940
add esp, 4
test eax, eax
jne 0x47b64d
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 0x47873f
mov dword [esp + 0x34], 0xffffffff
jmp 0x47873f
cmp esi, 0x23
jl 0x47afc1
mov ebx, 0xffffffdd
sub ebx, dword [esp + 0x1c]
cmp dword [esp + 0x34], 0xfffffffe
jne 0x47af4d
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 0x47af82
mov ecx, ebx
shl eax, cl
mov ecx, dword [esp + 0x11c]
or dword [ecx + 0x40], eax
cmp ebx, dword [ecx + 0x3c]
jle 0x47af94
mov dword [ecx + 0x3c], ebx
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x47873f
nop
movzx ecx, word [eax + 4]
cmp ecx, ebx
je 0x47afb3
mov eax, dword [eax]
test eax, eax
jne 0x47afa0
jmp 0x47873f
mov edx, 1
mov word [eax + 6], dx
jmp 0x47873f
cmp esi, 0xf
je 0x47b02b
cmp esi, 0x10
je 0x47b02b
cmp esi, 0x1d
jl 0x47b00b
cmp esi, 0x22
jg 0x47b00b
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 0x477af3
cmp esi, 5
jle 0x47b019
mov dword [esp + 0x18], ebx
cmp esi, 0x17
jl 0x47b01d
mov dword [esp + 0x18], edx
neg al
mov byte [ebx], al
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x478743
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.00475800
add esp, 0xc
test eax, eax
js 0x47b65a
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 0x478743
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x60], edx
cmp eax, 0xfffffffe
jne 0x47b0e9
or eax, 0xffffffff
mov dword [esp + 0x4c], eax
cmp ebp, 0x80
jge 0x47b0dc
mov eax, ebp
or eax, dword [esp + 0x9c]
mov dword [esp + 0x34], eax
cmp ebp, 0x7f
jle 0x47873f
mov eax, dword [esp + 0x14]
movzx eax, byte [eax - 1]
or eax, dword [ecx + 0x50]
mov dword [esp + 0x44], eax
jmp 0x47873f
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], eax
jmp 0x47873f
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
cmp ebp, 0x80
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
jge 0x47874b
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 0x477af3
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x11c]
mov edi, dword [esp + 0xd4]
add esi, 2
xor ecx, ecx
jmp 0x477af3
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 0x47b22c
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 0x47b226
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 0x47b65a
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 0x47b65a
mov edx, dword [esp + 0x108]
mov dword [edx], 0x42
jmp 0x47b65a
mov eax, dword [esp + 0x108]
mov dword [eax], 0x3b
jmp 0x47b65a
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 0x47b65a
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0xf
jmp 0x47b65a
mov edx, dword [esp + 0x108]
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov dword [edx], eax
jmp 0x47b65a
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 0x47b65a
mov ecx, dword [esp + 0x108]
mov dword [ecx], 0x1b
jmp 0x47b65a
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 0x47b65a
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