Function at 0x474c80
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xb8
movups xmm0, xmmword [0x4a8ed4]
push esi
push edi
mov edi, ecx
movups xmmword [esp + 0x80], xmm0
test edi, edi
je 0x4761c8
mov esi, dword [edi]
test esi, esi
je 0x4761c8
mov dl, byte [esi]
mov al, dl
and al, 6
cmp al, 6
jne 0x4761f0
mov ecx, dword [esi]
mov eax, dword [esi + 4]
shrd ecx, eax, 8
test ecx, ecx
je 0x4761f0
push 0x40
push 0
call fcn.00459ec0
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x4761c8
lea esi, [eax + 0x40]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x14], esi
mov edi, dword [edi]
mov dword [esp + 0x90], edi
mov dl, byte [edi]
mov eax, dword [edi]
and dl, 7
mov dword [esp + 0x64], eax
cmp dl, 7
mov eax, dword [edi + 4]
mov edi, dword [esp + 0x2c]
sete cl
shrd dword [esp + 0x64], eax, 8
shl dword [esp + 0x64], cl
mov al, cl
shl al, 5
or al, 0x5b
mov byte [edi + 1], 0xa
mov byte [edi], al
add edi, 2
mov eax, dword [esp + 0x90]
mov byte [esp + 0x43], cl
mov dword [esp + 0x28], edi
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x68], eax
cmp dl, 7
jne 0x474d53
mov eax, dword [eax + 0x10]
mov dword [esp + 0x68], eax
mov ch, byte [eax]
and ch, 7
mov dword [esp + 0x1c], 1
movzx eax, ch
sub eax, 2
mov byte [esp + 0x12], ch
cmp eax, 5
ja case.default.0x474d80
mov edx, 0x40
mov dword [esp + 0x44], edx
nop dword [eax]
jmp dword [eax*4 + 0x476e84]
mov eax, dword [esp + 0x64]
mov ch, al
mov esi, dword [esp + 0x68]
not ch
and al, cl
and ch, cl
mov byte [esp + 0x57], ch
mov byte [esp + 0x13], al
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov esi, dword [esi + 8]
shrd ecx, eax, 8
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], ecx
cmp ecx, 0x2aaaaaa7
jae 0x47618b
cmp byte [esp + 0x13], 0
je 0x474dd0
mov dword [esp + 0x18], 0
jmp 0x474ddb
mov eax, dword [esp + 0x1c]
shl eax, 2
mov dword [esp + 0x18], eax
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x18]
lea eax, [ecx + eax*2]
lea ecx, [eax + 0x10]
add eax, 0x10
add eax, edi
mov dword [esp + 0x18], ecx
cmp eax, dword [esp + 0x14]
jb 0x474e8d
mov eax, edx
mov edi, dword [esp + 0x8c]
shr eax, 1
cmp eax, ecx
cmovbe eax, ecx
add eax, 7
and eax, 0xfffffff8
lea esi, [eax + edx]
cmp esi, eax
sbb ecx, ecx
neg ecx
cmp esi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x476192
push esi
push dword [esp + 0x30]
mov dword [esp + 0x4c], esi
push edi
call dword [esp + 0x90]
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x476192
mov eax, dword [esp + 0x14]
mov edi, ecx
mov edx, dword [esp + 0x5c]
sub edx, eax
sub edi, edx
add edi, esi
mov esi, ecx
sub esi, dword [esp + 0x2c]
push edx
add eax, esi
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x13], al
cmovne ecx, eax
test ecx, ecx
je 0x474eba
mov dword [esp + 0x94], 0x20202020
mov eax, dword [esp + 0x94]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x474eb0
mov eax, dword [esp + 0x20]
add eax, esi
mov byte [edi], 0x22
mov dword [esp + 0x18], eax
lea eax, [edi + 1]
mov edi, dword [esp + 0x18]
nop
movzx ecx, byte [esi]
cmp byte [ecx + 0x4a6030], 0
jne case.default.0x474f61
movzx ecx, byte [esi + 1]
cmp byte [ecx + 0x4a6030], 0
je 0x474ef1
mov cl, byte [esi]
mov byte [eax], cl
inc eax
inc esi
jmp case.default.0x474f61
movzx ecx, byte [esi + 2]
cmp byte [ecx + 0x4a6030], 0
je 0x474f0c
mov cx, word [esi]
mov word [eax], cx
add eax, 2
add esi, 2
jmp case.default.0x474f61
movzx ecx, byte [esi + 3]
cmp byte [ecx + 0x4a6030], 0
je 0x474f2d
mov cx, word [esi]
mov word [eax], cx
mov cl, byte [esi + 2]
mov byte [eax + 2], cl
add eax, 3
add esi, 3
jmp case.default.0x474f61
movzx ecx, byte [esi + 4]
cmp byte [ecx + 0x4a6030], 0
je 0x474f68
mov ecx, dword [esi]
mov dword [eax], ecx
add eax, 4
add esi, 4
cmp esi, edi
jae 0x475303
mov cl, byte [esi]
movzx edx, cl
mov byte [esp + 0x13], cl
movzx ecx, byte [edx + 0x4a6030]
cmp ecx, 5
ja case.default.0x474f61
jmp dword [ecx*4 + 0x476e9c]
movzx ecx, byte [esi + 5]
cmp byte [ecx + 0x4a6030], 0
je 0x474f87
mov ecx, dword [esi]
mov dword [eax], ecx
mov cl, byte [esi + 4]
mov byte [eax + 4], cl
add eax, 5
add esi, 5
jmp case.default.0x474f61
movzx ecx, byte [esi + 6]
cmp byte [ecx + 0x4a6030], 0
je 0x474fa8
mov ecx, dword [esi]
mov dword [eax], ecx
mov cx, word [esi + 4]
mov word [eax + 4], cx
add eax, 6
add esi, 6
jmp case.default.0x474f61
movzx ecx, byte [esi + 7]
cmp byte [ecx + 0x4a6030], 0
je 0x474fd2
mov ecx, dword [esi]
mov dword [eax], ecx
mov cx, word [esi + 4]
mov word [eax + 4], cx
mov cl, byte [esi + 6]
mov byte [eax + 6], cl
add eax, 7
add esi, 7
jmp case.default.0x474f61
lea ecx, [esi + 8]
mov dword [esp + 0x18], ecx
movzx ecx, byte [ecx]
cmp byte [ecx + 0x4a6030], 0
je 0x474ffb
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov esi, dword [esp + 0x18]
mov dword [eax], ecx
mov dword [eax + 4], edx
add eax, 8
jmp case.default.0x474f61
movzx ecx, byte [esi + 9]
cmp byte [ecx + 0x4a6030], 0
je 0x475021
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov cl, byte [esi + 8]
mov byte [eax + 8], cl
add eax, 9
add esi, 9
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xa]
cmp byte [ecx + 0x4a6030], 0
je 0x475049
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov cx, word [esi + 8]
mov word [eax + 8], cx
add eax, 0xa
add esi, 0xa
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xb]
cmp byte [ecx + 0x4a6030], 0
je 0x475077
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov cx, word [esi + 8]
mov word [eax + 8], cx
mov cl, byte [esi + 0xa]
mov byte [eax + 0xa], cl
add eax, 0xb
add esi, 0xb
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xc]
cmp byte [ecx + 0x4a6030], 0
je 0x47509d
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
add eax, 0xc
add esi, 0xc
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xd]
cmp byte [ecx + 0x4a6030], 0
je 0x4750c9
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
mov cl, byte [esi + 0xc]
mov byte [eax + 0xc], cl
add eax, 0xd
add esi, 0xd
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xe]
cmp byte [ecx + 0x4a6030], 0
je 0x4750f7
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
mov cx, word [esi + 0xc]
mov word [eax + 0xc], cx
add eax, 0xe
add esi, 0xe
jmp case.default.0x474f61
movzx ecx, byte [esi + 0xf]
cmp byte [ecx + 0x4a6030], 0
je 0x47512b
movq xmm0, qword [esi]
movq qword [eax], xmm0
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
mov cx, word [esi + 0xc]
mov word [eax + 0xc], cx
mov cl, byte [esi + 0xe]
mov byte [eax + 0xe], cl
add eax, 0xf
add esi, 0xf
jmp case.default.0x474f61
movups xmm0, xmmword [esi]
movups xmmword [eax], xmm0
add eax, 0x10
add esi, 0x10
jmp 0x474ed0
mov cx, word [edx*2 + 0x4a9150]
mov word [eax], cx
add eax, 2
inc esi
jmp case.default.0x474f61
mov dword [esp + 0x98], 0x3030755c
mov ecx, dword [esp + 0x98]
mov dword [eax], ecx
movzx ecx, byte [esi]
mov cx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 4], cx
add eax, 6
inc esi
jmp case.default.0x474f61
mov dl, byte [esi + 1]
mov word [esp + 0x70], 0x755c
movzx ecx, word [esp + 0x70]
mov word [eax], cx
movzx ecx, byte [esp + 0x13]
and ecx, 0x1f
shl ecx, 6
mov dword [esp + 0x18], ecx
movzx ecx, dl
mov edx, dword [esp + 0x18]
and ecx, 0x3f
or edx, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 2], cx
movzx ecx, dl
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 4], cx
add eax, 6
add esi, 2
jmp case.default.0x474f61
mov cl, byte [esi + 2]
mov dl, byte [esi + 1]
mov byte [esp + 0x12], cl
mov word [esp + 0x74], 0x755c
movzx ecx, word [esp + 0x74]
mov word [eax], cx
movzx ecx, byte [esp + 0x13]
shl ecx, 6
movzx edx, dl
and edx, 0x3f
or edx, ecx
movzx ecx, byte [esp + 0x12]
and ecx, 0x3f
shl edx, 6
or edx, ecx
movzx edx, dx
mov ecx, edx
shr ecx, 8
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 2], cx
movzx ecx, dl
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 4], cx
add eax, 6
add esi, 3
jmp case.default.0x474f61
movzx ecx, byte [esi + 1]
movzx edx, byte [esp + 0x13]
and ecx, 0x3f
and edx, 7
mov word [esp + 0x78], 0x755c
shl edx, 6
or edx, ecx
mov word [esp + 0x3c], 0x755c
movzx ecx, byte [esi + 2]
and ecx, 0x3f
shl edx, 6
or edx, ecx
movzx ecx, byte [esi + 3]
and ecx, 0x3f
shl edx, 6
or edx, ecx
sub edx, 0x10000
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x24]
and ecx, 0x3ff
shr edx, 0xa
add ecx, 0xdc00
add edx, 0xd800
mov dword [esp + 0x24], ecx
movzx ecx, word [esp + 0x78]
mov word [eax], cx
mov ecx, edx
shr ecx, 8
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 2], cx
movzx ecx, dl
mov edx, dword [esp + 0x24]
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 4], cx
movzx ecx, word [esp + 0x3c]
mov word [eax + 6], cx
mov ecx, edx
shr ecx, 8
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 8], cx
movzx ecx, dl
movzx ecx, word [ecx*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [eax + 0xa], cx
add eax, 0xc
jmp 0x474f41
mov cl, byte [esp + 0x13]
mov byte [eax], cl
inc eax
inc esi
jmp 0x474ed0
mov cl, byte [esp + 0x57]
lea edi, [eax + 1]
mov byte [eax], 0x22
test cl, cl
mov edx, 0x3a
mov eax, 0x2c
cmovne eax, edx
mov ecx, 0x20
mov edx, dword [esp + 0x1c]
mov byte [edi], al
mov eax, 0xa
cmovne eax, ecx
mov byte [edi + 1], al
add edi, 2
jmp 0x475e8c
mov al, cl
mov ecx, 0
and al, byte [esp + 0x64]
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x1c]
lea eax, [eax*4]
cmove ecx, eax
lea eax, [ecx + 0x20]
mov dword [esp + 0x18], eax
lea eax, [edi + 0x20]
add eax, ecx
cmp eax, esi
jb 0x4753ff
mov eax, edx
shr eax, 1
cmp eax, dword [esp + 0x18]
cmovbe eax, dword [esp + 0x18]
add eax, 7
and eax, 0xfffffff8
lea edi, [eax + edx]
cmp edi, eax
sbb ecx, ecx
neg ecx
cmp edi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x47618b
mov eax, edi
mov edi, dword [esp + 0x8c]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x18], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x12], al
cmovne ecx, eax
test ecx, ecx
je 0x47542c
mov dword [esp + 0x9c], 0x20202020
mov eax, dword [esp + 0x9c]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x475422
mov esi, dword [esp + 0x68]
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x34], eax
mov eax, edx
and eax, 0x10
mov dword [esp + 0x24], ecx
or eax, 0
mov dword [esp + 0x20], esi
je 0x475469
push esi
push ecx
mov edx, 1
mov ecx, edi
call fcn.00470d70
add esp, 8
mov edi, eax
jmp 0x475ad3
mov esi, ecx
mov ecx, dword [esp + 0x20]
neg esi
mov dword [esp + 0x58], esi
adc ecx, 0
neg ecx
mov dword [esp + 0x18], ecx
and edx, 8
jne 0x475487
xor eax, eax
jmp 0x47548c
mov eax, 1
cmp dword [esp + 0x20], 0
mov edx, dword [esp + 0x24]
jg 0x4754a7
jl 0x47549d
test edx, edx
jae 0x4754a7
mov dword [esp + 0x24], 1
jmp 0x4754af
mov dword [esp + 0x24], 0
mov byte [edi], 0x2d
and eax, dword [esp + 0x24]
jne 0x4754c6
mov ecx, dword [esp + 0x20]
mov esi, edx
mov dword [esp + 0x58], edx
mov dword [esp + 0x18], ecx
add edi, eax
mov dword [esp + 0x28], edi
test ecx, ecx
ja 0x475634
jb 0x4754e2
cmp esi, 0x5f5e100
jae 0x475634
cmp esi, 0x64
jae 0x475507
cmp esi, 0xa
sbb ecx, ecx
neg ecx
mov ax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
mov eax, 2
sub eax, ecx
add edi, eax
jmp 0x475ad3
cmp esi, 0x2710
jae 0x475545
imul edx, esi, 0x147b
shr edx, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
imul eax, edx, 0x64
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
add edi, 4
jmp 0x475ad3
mov eax, esi
cmp esi, 0xf4240
jae 0x4755a8
mov ecx, 0x68db9
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x58], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edx, dword [esp + 0x58]
mov word [edi], ax
sub edi, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
imul eax, esi, 0x64
sub edx, eax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
add edi, 6
jmp 0x475ad3
mov ecx, 0x68db8bb
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
sub esi, eax
mov dword [esp + 0x58], esi
imul edx, dword [esp + 0x58], 0x147b
imul esi, edi, 0x147b
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x28]
sbb ecx, ecx
neg ecx
sub dword [esp + 0x28], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx], ax
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x58]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x28]
mov word [edi + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
imul eax, edx, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 6], ax
add edi, 8
jmp 0x475ad3
mov eax, esi
mov edx, 0x8461cefd
mul edx
mov edi, 0xabcc7711
mov dword [esp + 0x30], eax
mov esi, edx
mov eax, dword [esp + 0x58]
mul edi
mov edi, eax
mov dword [esp + 0x30], edx
mov eax, ecx
mov ecx, 0x8461cefd
mul ecx
mov dword [esp + 0xb8], edx
mov ecx, eax
mov eax, dword [esp + 0x18]
mov edx, 0xabcc7711
mul edx
add ecx, esi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0xb8]
adc edx, 0
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x20]
add edi, ecx
mov ecx, dword [esp + 0x30]
adc ecx, 0
mov dword [esp + 0xb8], edi
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x24]
adc eax, eax
add esi, edx
adc ecx, eax
shrd esi, ecx, 0x1a
shr ecx, 0x1a
cmp dword [esp + 0x18], 0x2386f2
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x20], esi
ja 0x4758b2
jb 0x4756d6
cmp ecx, 0x6fc10000
jae 0x4758b2
imul eax, esi, 0x5f5e100
sub ecx, eax
mov dword [esp + 0x58], ecx
cmp esi, 0x64
jae 0x47570b
mov edi, dword [esp + 0x28]
cmp esi, 0xa
sbb ecx, ecx
neg ecx
mov ax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
mov eax, 2
sub eax, ecx
add edi, eax
jmp 0x47583b
cmp esi, 0x2710
jae 0x47574d
mov edi, dword [esp + 0x28]
imul edx, esi, 0x147b
shr edx, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
imul eax, edx, 0x64
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
add edi, 4
jmp 0x47583b
mov eax, esi
cmp esi, 0xf4240
jae 0x4757b4
mov ecx, 0x68db9
mov edi, dword [esp + 0x28]
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x20], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x20]
mov word [edi + 2], ax
imul eax, esi, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
add edi, 6
jmp 0x47583b
mov ecx, 0x68db8bb
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
sub esi, eax
mov dword [esp + 0x20], esi
imul edx, dword [esp + 0x20], 0x147b
imul esi, edi, 0x147b
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x28]
sbb ecx, ecx
neg ecx
sub dword [esp + 0x28], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx], ax
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x28]
mov word [edi + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
imul eax, edx, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 6], ax
add edi, 8
mov ecx, dword [esp + 0x58]
mov edx, 0x68db8bb
mov eax, ecx
mul edx
mov esi, edx
shr esi, 8
imul eax, esi, 0x2710
sub ecx, eax
mov dword [esp + 0x58], ecx
imul edx, dword [esp + 0x58], 0x147b
imul ecx, esi, 0x147b
shr edx, 0x13
shr ecx, 0x13
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
imul eax, ecx, 0x64
mov ecx, dword [esp + 0x58]
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
imul eax, edx, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 6], ax
add edi, 8
jmp 0x475ad3
imul eax, esi, 0x5f5e100
mov edi, 0x346dc5d6
sub ecx, eax
mov eax, esi
mov dword [esp + 0x58], ecx
mov ecx, 0x3886594b
mul ecx
mov dword [esp + 0x30], eax
mov esi, edx
mov eax, dword [esp + 0x20]
mul edi
mov edi, eax
mov dword [esp + 0xb8], edx
mov eax, dword [esp + 0x24]
mul ecx
mov ecx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x24]
mov edx, 0x346dc5d6
mul edx
add ecx, esi
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
adc edx, 0
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x24]
add edi, ecx
mov ecx, dword [esp + 0xb8]
adc ecx, 0
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x20]
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x18]
adc eax, eax
add esi, edx
adc ecx, eax
shrd esi, ecx, 0xb
imul eax, esi, 0x2710
sub edi, eax
mov eax, esi
mov dword [esp + 0x20], edi
cmp esi, 0xf4240
jae 0x4759a6
mov ecx, 0x68db9
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x24], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edx, dword [esp + 0x28]
mov word [edx], ax
sub edx, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x24]
mov word [edx + 2], ax
imul eax, esi, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx + 4], ax
add edx, 6
jmp 0x475a31
mov ecx, 0x68db8bb
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
sub esi, eax
mov dword [esp + 0x24], esi
imul edx, dword [esp + 0x24], 0x147b
imul esi, edi, 0x147b
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x28]
sbb ecx, ecx
neg ecx
sub dword [esp + 0x28], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x28]
mov word [edx], ax
mov edx, dword [esp + 0x30]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x20]
mov word [ecx + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 4], ax
imul eax, edx, 0x64
mov edx, dword [esp + 0x24]
sub edx, eax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
lea edx, [ecx + 8]
mov word [ecx + 6], ax
imul ecx, edi, 0x147b
shr ecx, 0x13
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx], ax
imul eax, ecx, 0x64
mov ecx, 0x68db8bb
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x58]
mov word [edx + 2], ax
add edx, 4
mov dword [esp + 0x18], edx
mov eax, edi
mul ecx
mov esi, edx
shr esi, 8
imul eax, esi, 0x2710
imul ecx, esi, 0x147b
sub edi, eax
imul edx, edi, 0x147b
shr ecx, 0x13
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
shr edx, 0x13
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
mov word [edx], ax
imul eax, ecx, 0x64
mov ecx, edx
mov edx, dword [esp + 0x30]
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 4], ax
imul eax, edx, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
lea edi, [ecx + 8]
mov word [ecx + 6], ax
test edi, edi
je case.default.0x476176
mov edx, dword [esp + 0x1c]
mov word [edi], 0xa2c
add edi, 2
jmp 0x475e8c
mov al, cl
mov ecx, 0
and al, byte [esp + 0x64]
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x1c]
lea eax, [eax*4]
cmove ecx, eax
lea eax, [ecx + 0x10]
mov dword [esp + 0x30], eax
lea eax, [edi + 0x10]
add eax, ecx
cmp eax, esi
jb 0x475bb1
mov eax, edx
shr eax, 1
cmp eax, dword [esp + 0x30]
cmovbe eax, dword [esp + 0x30]
add eax, 7
and eax, 0xfffffff8
lea edi, [eax + edx]
cmp edi, eax
sbb ecx, ecx
neg ecx
cmp edi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x47618b
mov eax, edi
mov edi, dword [esp + 0x8c]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x30], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x12], al
cmovne ecx, eax
test ecx, ecx
je 0x475bde
mov dword [esp + 0xa0], 0x20202020
mov eax, dword [esp + 0xa0]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x475bd4
mov eax, dword [esp + 0x68]
mov cl, byte [eax]
and cl, 0x18
je 0x475c0f
mov dword [esp + 0xa8], 0x65757274
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xac], 0xa2c
mov edx, dword [esp + 0xac]
jmp 0x475c33
mov dword [esp + 0xb0], 0x736c6166
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xb4], 0xa2c65
mov edx, dword [esp + 0xb4]
mov dword [edi], eax
xor eax, eax
test cl, cl
mov dword [edi + 4], edx
mov edx, dword [esp + 0x1c]
setne al
sub edi, eax
add edi, 7
jmp 0x475e8c
mov al, cl
mov ecx, 0
and al, byte [esp + 0x64]
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x1c]
lea eax, [eax*4]
cmove ecx, eax
lea eax, [ecx + 0x10]
mov dword [esp + 0x30], eax
lea eax, [edi + 0x10]
add eax, ecx
cmp eax, esi
jb 0x475d12
mov eax, edx
shr eax, 1
cmp eax, dword [esp + 0x30]
cmovbe eax, dword [esp + 0x30]
add eax, 7
and eax, 0xfffffff8
lea edi, [eax + edx]
cmp edi, eax
sbb ecx, ecx
neg ecx
cmp edi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x47618b
mov eax, edi
mov edi, dword [esp + 0x8c]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x30], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x12], al
mov ecx, edx
cmovne ecx, eax
test ecx, ecx
je 0x475d41
mov dword [esp + 0xa4], 0x20202020
mov eax, dword [esp + 0xa4]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x475d37
mov dword [esp + 0x48], 0x6c6c756e
mov eax, dword [esp + 0x48]
mov dword [esp + 0x4c], 0xa2c
mov ecx, dword [esp + 0x4c]
mov dword [edi], eax
mov dword [edi + 4], ecx
add edi, 6
jmp 0x475e8c
mov eax, dword [esp + 0x68]
and cl, byte [esp + 0x64]
mov byte [esp + 0x57], cl
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 4]
shrd dword [esp + 0x24], eax, 8
cmp ch, 7
sete byte [esp + 0x13]
cmp dword [esp + 0x24], 0
jne 0x476001
test cl, cl
je 0x475da0
xor eax, eax
jmp 0x475da7
mov eax, dword [esp + 0x1c]
shl eax, 2
lea ecx, [eax + 0x10]
add eax, 0x10
add eax, edi
cmp eax, esi
jb 0x475e47
mov eax, edx
shr eax, 1
cmp eax, ecx
cmovbe eax, ecx
add eax, 7
and eax, 0xfffffff8
lea edi, [eax + edx]
cmp edi, eax
sbb ecx, ecx
neg ecx
cmp edi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x47618b
mov eax, edi
mov edi, dword [esp + 0x8c]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x30], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x57], al
mov ecx, edx
cmovne ecx, eax
test ecx, ecx
je 0x475e70
mov dword [esp + 0x7c], 0x20202020
mov eax, dword [esp + 0x7c]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x475e66
mov cl, byte [esp + 0x13]
shl cl, 5
mov al, cl
mov word [edi + 2], 0xa2c
or al, 0x5b
or cl, 0x5d
mov byte [edi], al
mov byte [edi + 1], cl
add edi, 4
sub dword [esp + 0x64], 1
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], edi
jne 0x475ff8
lea ecx, [edx*4]
mov dword [esp + 0x18], ecx
nop word [eax + eax]
mov byte [edi - 2], 0xa
dec edi
mov dword [esp + 0x28], edi
lea eax, [ecx + edi]
cmp eax, esi
jb 0x475f62
mov edi, dword [esp + 0x44]
mov eax, edi
shr eax, 1
cmp eax, ecx
cmovbe eax, ecx
add eax, 7
and eax, 0xfffffff8
lea edx, [eax + edi]
cmp edx, eax
sbb ecx, ecx
neg ecx
cmp edx, edi
mov edi, dword [esp + 0x8c]
sbb eax, eax
neg eax
or ecx, eax
jne 0x476192
mov eax, edx
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x30], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x14]
add edx, eax
mov dword [esp + 0x5c], edx
jmp 0x475f66
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x1c]
sub ecx, 4
dec eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov ecx, eax
test eax, eax
je 0x475f92
mov dword [esp + 0x6c], 0x20202020
mov eax, dword [esp + 0x6c]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x475f88
mov al, byte [esp + 0x43]
shl al, 5
or al, 0x5d
mov byte [edi], al
cmp esi, edx
jae 0x47617d
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x68], eax
mov eax, dword [esi]
mov dl, al
and dl, 1
shr eax, 1
mov byte [esp + 0x43], dl
dec eax
mov edx, dword [esi + 4]
add esi, 8
mov word [edi + 1], 0xa2c
add edi, 3
mov dword [esp + 0x90], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x64], eax
mov dword [esp + 0x28], edi
test eax, eax
je 0x475eb0
mov eax, dword [esp + 0x68]
jmp 0x47615a
mov eax, dword [esp + 0x68]
jmp 0x476153
test cl, cl
je 0x476009
xor eax, eax
jmp 0x476010
mov eax, dword [esp + 0x1c]
shl eax, 2
lea ecx, [eax + 0x20]
add eax, 0x20
add eax, edi
cmp eax, esi
jb 0x4760b4
mov eax, edx
shr eax, 1
cmp eax, ecx
cmovbe eax, ecx
add eax, 7
and eax, 0xfffffff8
lea edi, [eax + edx]
cmp edi, eax
sbb ecx, ecx
neg ecx
cmp edi, edx
sbb eax, eax
neg eax
or ecx, eax
jne 0x47618b
mov eax, edi
mov edi, dword [esp + 0x8c]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x4c], eax
push edi
call dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x30], eax
test eax, eax
je 0x476192
mov ecx, dword [esp + 0x5c]
mov edi, eax
sub ecx, esi
mov esi, eax
sub esi, dword [esp + 0x2c]
sub edi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [esp + 0x44]
add eax, esi
push ecx
push eax
push edi
call fcn.00478c80
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
add edi, esi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x44]
add esi, ecx
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x64]
sub esi, 8
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], 0
mov dword [esp + 0x14], esi
lea ecx, [eax + eax]
movzx eax, byte [esp + 0x43]
or ecx, eax
mov eax, dword [esp + 0x90]
mov dword [esi], ecx
mov cl, byte [esp + 0x13]
shl edx, cl
cmp byte [esp + 0x57], 0
mov dword [esi + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x64], edx
mov dl, cl
mov ecx, eax
mov byte [esp + 0x43], dl
cmovne ecx, dword [esp + 0x30]
test ecx, ecx
je 0x47611f
mov dword [esp + 0x60], 0x20202020
mov eax, dword [esp + 0x60]
mov dword [edi], eax
add edi, 4
sub ecx, 1
jne 0x476111
mov eax, dword [esp + 0x1c]
inc eax
shl dl, 5
mov dword [esp + 0x1c], eax
or dl, 0x5b
mov eax, dword [esp + 0x68]
mov byte [edi], dl
mov byte [edi + 1], 0xa
add edi, 2
cmp byte [esp + 0x12], 7
mov dword [esp + 0x90], eax
mov eax, dword [eax + 8]
mov dword [esp + 0x28], edi
mov eax, dword [eax + 0x10]
mov dword [esp + 0x68], eax
jne 0x47615a
mov eax, dword [eax + 0x10]
mov dword [esp + 0x68], eax
mov ch, byte [eax]
and ch, 7
movzx eax, ch
sub eax, 2
mov byte [esp + 0x12], ch
cmp eax, 5
ja case.default.0x476176
mov edx, dword [esp + 0x44]
mov cl, byte [esp + 0x43]
jmp dword [eax*4 + 0x476e84]
mov eax, dword [esp + 0x2c]
mov byte [edi + 1], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0x8c]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4761c8
push eax
push edi
call dword [esp + 0x90]
add esp, 8
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4761c8
push eax
push dword [esp + 0x90]
call dword [esp + 0x90]
add esp, 8
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x2c]
push eax
push dword [esp + 0x90]
call dword [esp + 0x90]
add esp, 8
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movzx eax, dl
and eax, 7
add eax, 0xfffffffe
cmp eax, 5
ja case.default.0x476202
jmp dword [eax*4 + 0x476eb4]
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
shrd ecx, eax, 8
mov dword [esp + 0x30], ecx
cmp ecx, 0x2aaaaaa7
jae case.default.0x476202
lea eax, [ecx + ecx*2]
lea eax, [eax*2 + 4]
push eax
push 0
call fcn.00459ec0
add esp, 8
mov dword [esp + 0x7c], eax
test eax, eax
je case.default.0x476202
mov edx, dword [esp + 0x30]
lea esi, [eax + 1]
add edx, edi
mov byte [eax], 0x22
mov dword [esp + 0x20], edx
nop word [eax + eax]
mov cl, byte [edi]
movzx eax, cl
cmp byte [eax + 0x4a6030], 0
jne 0x4764c5
lea eax, [edi + 1]
mov dword [esp + 0x30], eax
movzx eax, byte [eax]
cmp byte [eax + 0x4a6030], 0
je 0x476291
mov edi, dword [esp + 0x30]
mov byte [esi], cl
inc esi
jmp 0x4764c5
movzx eax, byte [edi + 2]
cmp byte [eax + 0x4a6030], 0
je 0x4762af
mov ax, word [edi]
mov word [esi], ax
add esi, 2
add edi, 2
jmp 0x4764c5
movzx eax, byte [edi + 3]
cmp byte [eax + 0x4a6030], 0
je 0x4762d3
mov ax, word [edi]
mov word [esi], ax
mov al, byte [edi + 2]
mov byte [esi + 2], al
add esi, 3
add edi, 3
jmp 0x4764c5
movzx eax, byte [edi + 4]
cmp byte [eax + 0x4a6030], 0
je 0x4762ef
mov eax, dword [edi]
mov dword [esi], eax
add esi, 4
add edi, 4
jmp 0x4764c5
movzx eax, byte [edi + 5]
cmp byte [eax + 0x4a6030], 0
je 0x476311
mov eax, dword [edi]
mov dword [esi], eax
mov al, byte [edi + 4]
mov byte [esi + 4], al
add esi, 5
add edi, 5
jmp 0x4764c5
movzx eax, byte [edi + 6]
cmp byte [eax + 0x4a6030], 0
je 0x476335
mov eax, dword [edi]
mov dword [esi], eax
mov ax, word [edi + 4]
mov word [esi + 4], ax
add esi, 6
add edi, 6
jmp 0x4764c5
movzx eax, byte [edi + 7]
cmp byte [eax + 0x4a6030], 0
je 0x47635f
mov eax, dword [edi]
mov dword [esi], eax
mov ax, word [edi + 4]
mov word [esi + 4], ax
mov al, byte [edi + 6]
mov byte [esi + 6], al
add esi, 7
add edi, 7
jmp 0x4764c5
lea eax, [edi + 8]
mov dword [esp + 0x30], eax
movzx eax, byte [eax]
cmp byte [eax + 0x4a6030], 0
je 0x476388
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov edi, dword [esp + 0x30]
mov dword [esi], eax
mov dword [esi + 4], ecx
add esi, 8
jmp 0x4764c5
movzx eax, byte [edi + 9]
cmp byte [eax + 0x4a6030], 0
je 0x4763ae
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov al, byte [edi + 8]
mov byte [esi + 8], al
add esi, 9
add edi, 9
jmp 0x4764c5
movzx eax, byte [edi + 0xa]
cmp byte [eax + 0x4a6030], 0
je 0x4763d6
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov ax, word [edi + 8]
mov word [esi + 8], ax
add esi, 0xa
add edi, 0xa
jmp 0x4764c5
movzx eax, byte [edi + 0xb]
cmp byte [eax + 0x4a6030], 0
je 0x476404
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov ax, word [edi + 8]
mov word [esi + 8], ax
mov al, byte [edi + 0xa]
mov byte [esi + 0xa], al
add esi, 0xb
add edi, 0xb
jmp 0x4764c5
movzx eax, byte [edi + 0xc]
cmp byte [eax + 0x4a6030], 0
je 0x47642a
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
add esi, 0xc
add edi, 0xc
jmp 0x4764c5
movzx eax, byte [edi + 0xd]
cmp byte [eax + 0x4a6030], 0
je 0x476453
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
mov al, byte [edi + 0xc]
mov byte [esi + 0xc], al
add esi, 0xd
add edi, 0xd
jmp 0x4764c5
movzx eax, byte [edi + 0xe]
cmp byte [eax + 0x4a6030], 0
je 0x47647e
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
mov ax, word [edi + 0xc]
mov word [esi + 0xc], ax
add esi, 0xe
add edi, 0xe
jmp 0x4764c5
movzx eax, byte [edi + 0xf]
cmp byte [eax + 0x4a6030], 0
je 0x4764af
movq xmm0, qword [edi]
movq qword [esi], xmm0
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
mov ax, word [edi + 0xc]
mov word [esi + 0xc], ax
mov al, byte [edi + 0xe]
mov byte [esi + 0xe], al
add esi, 0xf
add edi, 0xf
jmp 0x4764c5
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
add esi, 0x10
add edi, 0x10
jmp 0x476260
inc edi
mov edx, dword [esp + 0x20]
cmp edi, edx
jae 0x47667f
mov dh, byte [edi]
movzx eax, dh
movzx ecx, byte [eax + 0x4a6030]
cmp ecx, 5
ja case.default.0x4764de
jmp dword [ecx*4 + 0x476ecc]
mov ax, word [eax*2 + 0x4a9150]
mov word [esi], ax
add esi, 2
jmp 0x4764c0
mov dword [esp + 0x60], 0x3030755c
mov eax, dword [esp + 0x60]
mov dword [esi], eax
movzx eax, byte [edi]
mov ax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 4], ax
add esi, 6
jmp 0x4764c0
mov cl, byte [edi + 1]
mov word [esp + 0x3c], 0x755c
movzx eax, word [esp + 0x3c]
mov word [esi], ax
movzx edx, dh
and edx, 0x1f
movzx eax, cl
and eax, 0x3f
shl edx, 6
or edx, eax
mov eax, edx
shr eax, 8
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 2], ax
movzx eax, dl
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 4], ax
add esi, 6
add edi, 2
jmp case.default.0x4764de
mov cl, byte [edi + 1]
mov dl, byte [edi + 2]
mov word [esp + 0x78], 0x755c
movzx eax, word [esp + 0x78]
mov word [esi], ax
movzx ecx, cl
and ecx, 0x3f
movzx eax, dh
shl eax, 6
or ecx, eax
movzx eax, dl
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx ecx, cx
mov eax, ecx
shr eax, 8
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 2], ax
movzx eax, cl
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 4], ax
add esi, 6
add edi, 3
jmp case.default.0x4764de
movzx eax, byte [edi + 1]
and eax, 0x3f
movzx edx, dh
and edx, 7
mov word [esp + 0x74], 0x755c
shl edx, 6
or edx, eax
mov word [esp + 0x70], 0x755c
movzx eax, byte [edi + 2]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, byte [edi + 3]
and eax, 0x3f
shl edx, 6
or edx, eax
movzx eax, word [esp + 0x74]
mov word [esi], ax
sub edx, 0x10000
mov ecx, edx
and edx, 0x3ff
shr ecx, 0xa
add edx, 0xdc00
add ecx, 0xd800
mov eax, ecx
shr eax, 8
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 2], ax
movzx eax, cl
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 4], ax
movzx eax, word [esp + 0x70]
mov word [esi + 6], ax
mov eax, edx
shr eax, 8
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 8], ax
movzx eax, dl
movzx eax, word [eax*2 + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF_v]
mov word [esi + 0xa], ax
add esi, 0xc
add edi, 4
jmp case.default.0x4764de
mov byte [esi], dh
inc esi
mov edx, dword [esp + 0x20]
inc edi
jmp 0x476260
mov byte [esi], 0x22
lea edi, [esi + 1]
mov edx, dword [esp + 0x7c]
mov eax, edx
mov byte [edi], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0x20
push 0
call fcn.00459ec0
mov ecx, eax
add esp, 8
mov dword [esp + 0x7c], ecx
test ecx, ecx
je case.default.0x476202
mov eax, dword [esi]
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x4c], eax
mov eax, dword [esi]
and eax, 0x10
mov dword [esp + 0x6c], edx
or eax, 0
je 0x4766e5
push edx
push edi
mov edx, 1
call fcn.00470d70
add esp, 8
mov edi, eax
jmp 0x476d56
mov esi, edi
mov eax, edx
mov edx, dword [esp + 0x30]
neg esi
mov dword [esp + 0x1c], esi
adc eax, 0
neg eax
mov dword [esp + 0x60], eax
and edx, 8
je 0x476706
mov edx, 1
cmp dword [esp + 0x6c], 0
jg 0x47671d
jl 0x476713
test edi, edi
jae 0x47671d
mov dword [esp + 0x18], 1
jmp 0x476725
mov dword [esp + 0x18], 0
mov byte [ecx], 0x2d
and edx, dword [esp + 0x18]
jne 0x47673c
mov eax, dword [esp + 0x6c]
mov esi, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x60], eax
lea edi, [edx + ecx]
mov dword [esp + 0x14], edi
test eax, eax
ja 0x4768bd
jb 0x476759
cmp esi, 0x5f5e100
jae 0x4768bd
cmp esi, 0x64
jae 0x476782
cmp esi, 0xa
sbb ecx, ecx
neg ecx
mov ax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
mov eax, 2
sub eax, ecx
add edi, eax
mov dword [esp + 0x14], edi
jmp 0x476d56
cmp esi, 0x2710
jae 0x4767c4
imul edx, esi, 0x147b
shr edx, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
imul eax, edx, 0x64
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
add edi, 4
mov dword [esp + 0x14], edi
jmp 0x476d56
mov eax, esi
cmp esi, 0xf4240
jae 0x47682b
mov ecx, 0x68db9
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x1c], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x1c]
mov word [edi + 2], ax
imul eax, esi, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
add edi, 6
mov dword [esp + 0x14], edi
jmp 0x476d56
mov ecx, 0x68db8bb
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
mov dword [esp + 0x30], edi
sub esi, eax
mov dword [esp + 0x1c], esi
imul edx, dword [esp + 0x1c], 0x147b
imul esi, edi, 0x147b
mov edi, dword [esp + 0x14]
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
sbb ecx, ecx
neg ecx
sub dword [esp + 0x14], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x14]
mov word [edi], ax
mov edi, dword [esp + 0x30]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 4], ax
imul eax, edx, 0x64
mov edx, dword [esp + 0x1c]
sub edx, eax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 6], ax
add ecx, 8
mov dword [esp + 0x14], ecx
mov edi, ecx
jmp 0x476d56
mov eax, esi
mov ecx, 0x8461cefd
mul ecx
mov edi, 0xabcc7711
mov dword [esp + 0x48], eax
mov esi, edx
mov eax, dword [esp + 0x1c]
mul edi
mov edi, eax
mov dword [esp + 0xb8], edx
mov eax, dword [esp + 0x60]
mul ecx
mov ecx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x60]
mov edx, 0xabcc7711
mul edx
add ecx, esi
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x30]
adc edx, 0
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x20]
add edi, ecx
mov ecx, dword [esp + 0xb8]
adc ecx, 0
mov dword [esp + 0x48], edi
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x6c]
adc eax, eax
add esi, edx
adc ecx, eax
shrd esi, ecx, 0x1a
shr ecx, 0x1a
cmp dword [esp + 0x60], 0x2386f2
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], esi
ja 0x476b35
jb 0x476959
cmp ecx, 0x6fc10000
jae 0x476b35
imul eax, esi, 0x5f5e100
sub ecx, eax
mov dword [esp + 0x1c], ecx
mov ecx, 0x68db8bb
cmp esi, 0x64
jae 0x476993
mov edi, dword [esp + 0x14]
cmp esi, 0xa
sbb ecx, ecx
neg ecx
mov ax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
mov eax, 2
sub eax, ecx
add edi, eax
jmp 0x476abe
cmp esi, 0x2710
jae 0x4769d5
mov edi, dword [esp + 0x14]
imul edx, esi, 0x147b
shr edx, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
imul eax, edx, 0x64
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
add edi, 4
jmp 0x476abe
mov eax, esi
cmp esi, 0xf4240
jae 0x476a3c
mov ecx, 0x68db9
mov edi, dword [esp + 0x14]
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x20], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
sub edi, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x20]
mov word [edi + 2], ax
imul eax, esi, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
add edi, 6
jmp 0x476abe
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
mov dword [esp + 0x30], edi
sub esi, eax
mov dword [esp + 0x20], esi
imul edx, dword [esp + 0x20], 0x147b
imul esi, edi, 0x147b
mov edi, dword [esp + 0x14]
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
sbb ecx, ecx
neg ecx
sub dword [esp + 0x14], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x14]
mov word [edi + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
imul eax, edx, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 6], ax
add edi, 8
mov ecx, dword [esp + 0x1c]
mov edx, 0x68db8bb
mov eax, ecx
mul edx
mov esi, edx
shr esi, 8
imul eax, esi, 0x2710
sub ecx, eax
mov dword [esp + 0x1c], ecx
imul edx, dword [esp + 0x1c], 0x147b
imul ecx, esi, 0x147b
shr edx, 0x13
shr ecx, 0x13
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi], ax
imul eax, ecx, 0x64
mov ecx, dword [esp + 0x1c]
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 4], ax
imul eax, edx, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edi + 6], ax
add edi, 8
jmp 0x476d56
imul eax, esi, 0x5f5e100
mov edi, 0x346dc5d6
sub ecx, eax
mov eax, esi
mov dword [esp + 0x1c], ecx
mov ecx, 0x3886594b
mul ecx
mov dword [esp + 0x48], eax
mov esi, edx
mov eax, dword [esp + 0x20]
mul edi
mov edi, eax
mov dword [esp + 0xb8], edx
mov eax, dword [esp + 0x6c]
mul ecx
mov ecx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x6c]
mov edx, 0x346dc5d6
mul edx
add ecx, esi
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
adc edx, 0
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x24]
add edi, ecx
mov ecx, dword [esp + 0xb8]
adc ecx, 0
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x20]
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x18]
adc eax, eax
add esi, edx
adc ecx, eax
shrd esi, ecx, 0xb
mov ecx, 0x68db8bb
imul eax, esi, 0x2710
sub edi, eax
mov eax, esi
mov dword [esp + 0x20], edi
cmp esi, 0xf4240
jae 0x476c2e
mov ecx, 0x68db9
mul ecx
imul eax, edx, 0x2710
sub esi, eax
mov dword [esp + 0x24], esi
imul esi, esi, 0x147b
shr esi, 0x13
cmp edx, 0xa
sbb ecx, ecx
neg ecx
movzx eax, word [ecx + edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edx, dword [esp + 0x14]
mov word [edx], ax
sub edx, ecx
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x24]
mov word [edx + 2], ax
imul eax, esi, 0x64
sub ecx, eax
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx + 4], ax
add edx, 6
jmp 0x476cb4
mul ecx
mov edi, edx
shr edi, 8
imul eax, edi, 0x2710
mov dword [esp + 0x30], edi
sub esi, eax
mov dword [esp + 0x24], esi
imul edx, dword [esp + 0x24], 0x147b
imul esi, edi, 0x147b
mov edi, dword [esp + 0x14]
shr edx, 0x13
shr esi, 0x13
cmp esi, 0xa
sbb ecx, ecx
neg ecx
sub dword [esp + 0x14], ecx
movzx eax, word [ecx + esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 0x14]
mov word [edi], ax
mov edi, dword [esp + 0x30]
imul eax, esi, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x20]
mov word [ecx + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 4], ax
imul eax, edx, 0x64
mov edx, dword [esp + 0x24]
sub edx, eax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
lea edx, [ecx + 8]
mov word [ecx + 6], ax
imul ecx, edi, 0x147b
shr ecx, 0x13
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [edx], ax
imul eax, ecx, 0x64
mov ecx, 0x68db8bb
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov edi, dword [esp + 0x1c]
mov word [edx + 2], ax
add edx, 4
mov eax, edi
mov dword [esp + 0x18], edx
mul ecx
mov esi, edx
shr esi, 8
imul eax, esi, 0x2710
imul ecx, esi, 0x147b
sub edi, eax
shr ecx, 0x13
imul edx, edi, 0x147b
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x18]
movzx eax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
shr edx, 0x13
mov word [edi], ax
imul eax, ecx, 0x64
mov ecx, edi
mov edi, dword [esp + 0x1c]
sub esi, eax
movzx eax, word [esi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 2], ax
movzx eax, word [edx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx + 4], ax
imul eax, edx, 0x64
sub edi, eax
movzx eax, word [edi*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
lea edi, [ecx + 8]
mov word [ecx + 6], ax
test edi, edi
jne 0x476685
mov eax, dword [esp + 0x7c]
push eax
push dword [esp + 0x90]
call dword [esp + 0x90]
add esp, 8
xor edx, edx
mov eax, edx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 8
push 0
call fcn.00459ec0
mov edx, eax
add esp, 8
test edx, edx
je case.default.0x476202
mov cl, byte [esi]
and cl, 0x18
je 0x476da9
mov dword [esp + 0x48], 0x65757274
mov dword [esp + 0x4c], 0xa2c
jmp 0x476db9
mov dword [esp + 0x48], 0x736c6166
mov dword [esp + 0x4c], 0xa2c65
mov eax, dword [esp + 0x48]
mov edi, edx
mov esi, dword [esp + 0x4c]
mov dword [edx], eax
xor eax, eax
test cl, cl
mov dword [edx + 4], esi
setne al
sub edi, eax
mov eax, edx
add edi, 5
mov byte [edi], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 8
push 0
call fcn.00459ec0
mov edx, eax
add esp, 8
test edx, edx
je case.default.0x476202
mov dword [esp + 0x48], 0x6c6c756e
lea edi, [edx + 4]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x4c], 0xa2c
mov ecx, dword [esp + 0x4c]
mov dword [edx], eax
mov eax, edx
mov dword [edx + 4], ecx
mov byte [edi], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 4
push 0
call fcn.00459ec0
mov edx, eax
add esp, 8
test edx, edx
je case.default.0x476202
mov word [esp + 0x3c], 0x5d5b
lea edi, [edx + 2]
mov ax, word [esp + 0x3c]
mov word [edx], ax
mov eax, edx
mov byte [edi], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 4
push 0
call fcn.00459ec0
mov edx, eax
add esp, 8
test edx, edx
je case.default.0x476202
mov word [esp + 0x3c], 0x7d7b
lea edi, [edx + 2]
mov ax, word [esp + 0x3c]
mov word [edx], ax
mov eax, edx
mov byte [edi], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret