Function at 0x477480
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x565f09
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x150
push ebx
push ebp
xor eax, eax
push esi
push edi
mov esi, ecx
mov dword [esp + 0x38], eax
mov cl, byte [esp + 0x33]
mov dword [esp + 0x168], 1
mov byte [esp + 0x14], cl
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x34]
mov byte [esp + 0x168], 2
call fcn.00531800
push 6
push 0x59c22c
lea ecx, [esp + 0x18]
mov byte [esp + 0x170], 3
call fcn.005318a0
push 4
lea ecx, [esp + 0x178]
mov byte [esp + 0x16c], 4
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
call fcn.00531ac0
mov bl, al
push 5
and ebx, 0xff
lea ecx, [esp + 0x178]
shl ebx, 8
call fcn.00531ac0
and eax, 0xff
add eax, ebx
cmp eax, 0x40b
jg 0x4789f8
je 0x47883b
cmp eax, 0x118
jg 0x477c37
je 0x477c1c
cmp eax, 0x10a
jg 0x477a08
je 0x4779ef
cmp eax, 0x103
jg 0x47793c
je 0x477921
mov ebx, 4
cmp eax, ebx
jg 0x477781
je 0x477766
dec eax
je 0x47774f
dec eax
je 0x4775b4
dec eax
jne case.0x479a0a.2824
mov al, byte [esi + 0x33]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
jmp 0x477aa3
mov al, byte [esi + 0x35]
and eax, 7
cmp eax, ebx
ja case.default.0x4775be
jmp dword [eax*4 + 0x479a78]
push 0x10
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x56
jmp 0x477626
push 0x10
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x55
jmp 0x477626
push 0x12
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 1
jmp 0x477626
push 0x12
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 2
jmp 0x477626
push 0x15
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x16
jmp 0x477626
push 0x12
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xa4]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebp, ecx
mov byte [esp + 0x168], 5
cmp eax, ebp
jae 0x47766c
mov ebp, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x477691
push eax
push ebp
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
jmp 0x47771a
test ebp, ebp
jbe 0x4776de
cmp ebp, ecx
jne 0x4776de
mov eax, dword [esi + 4]
test eax, eax
jne 0x4776a5
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4776de
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x4776c2
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x47771a
push 1
push ebp
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x47771a
mov esi, dword [esi + 4]
test esi, esi
jne 0x4776fa
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebp
mov byte [ecx + ebp], 0
mov eax, dword [esp + 0xa4]
mov byte [esp + 0x168], bl
test eax, eax
je case.0x479a0a.2824
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x478f23
cmp al, 0xff
je 0x478f23
dec al
mov byte [ecx], al
jmp case.0x479a0a.2824
mov al, byte [esi + 0x38]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
jmp 0x477aa3
mov dl, byte [esi + 0x33]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 1
push 0x1252
push edx
jmp 0x477aa6
sub eax, 0x101
je 0x477909
dec eax
jne case.0x479a0a.2824
mov al, byte [esi + 0x32]
and eax, 3
cmp eax, 3
ja case.default.0x47779e
jmp dword [eax*4 + 0x479a8c]
push 0x16
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x49
jmp 0x4777e3
push 0x16
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x50
jmp 0x4777e3
push 0x13
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x44
jmp 0x4777e3
push 0x13
push ebx
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x47
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00531810
lea ecx, [esp + 0x154]
push ecx
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebp, ecx
mov byte [esp + 0x168], 6
cmp eax, ebp
jae 0x477829
mov ebp, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x47785c
push eax
push ebp
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x154]
mov byte [esp + 0x168], bl
jmp 0x477728
test ebp, ebp
jbe 0x4778ba
cmp ebp, ecx
jne 0x4778ba
mov eax, dword [esi + 4]
test eax, eax
jne 0x477870
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4778ba
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x47788d
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], bl
mov byte [eax - 1], cl
mov eax, dword [esp + 0x154]
jmp 0x477728
push 1
push ebp
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x4778f6
mov esi, dword [esi + 4]
test esi, esi
jne 0x4778d6
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebp
mov byte [ecx + ebp], 0
mov eax, dword [esp + 0x154]
mov byte [esp + 0x168], bl
jmp 0x477728
xor edx, edx
mov dl, byte [esi + 0x38]
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fmul qword [0x572c28]
jmp 0x479408
mov cl, byte [esi + 0x33]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 8
push 0x1287
push ecx
jmp 0x477aa6
add eax, 0xfffffefc
cmp eax, 5
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479a9c]
mov al, byte [esi + 0x33]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
and al, 0x10
jmp 0x477aa5
mov dl, byte [esi + 0x33]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 4
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x33]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 2
push 0x1287
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x34]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
and al, 0x20
jmp 0x477aa5
mov dl, byte [esi + 0x33]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 0x20
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x35]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 4
push 0x1287
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x33]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
and al, 0x40
jmp 0x477aa5
add eax, 0xfffffef5
cmp eax, 0xc
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479ab4]
mov dl, byte [esi + 0x35]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 8
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x33]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 1
push 0x1287
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x35]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
jmp 0x477aa3
mov dl, byte [esi + 0x35]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 1
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x37]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 1
push 0x1252
push ecx
jmp 0x477aa6
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
mov al, byte [esi + 0x37]
and al, 2
push eax
mov ecx, esi
call fcn.00477260
fld qword [esp + 0x28]
call fcn.00556e88
push eax
lea ecx, [esp + 0x40]
push 0x59bb6c
push ecx
call fcn.00556aa4
add esp, 0xc
lea ecx, [esp + 0x14]
call fcn.0040a300
test eax, eax
jne 0x477ae4
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x14]
push edx
call fcn.00418780
mov esi, dword [esp + 0x170]
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.00404720
mov dword [esp + 0x38], 1
lea ecx, [esp + 0x10]
mov byte [esp + 0x168], 3
call fcn.00531940
lea ecx, [esp + 0x34]
mov byte [esp + 0x168], 2
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x168], 1
call fcn.00404900
lea ecx, [esp + 0x174]
mov byte [esp + 0x168], 0
call fcn.00531940
mov ecx, dword [esp + 0x160]
mov eax, esi
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x15c
ret 8
mov dl, byte [esi + 0x37]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 8
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x37]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 0x10
push 0x1252
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x37]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 0x20
jmp 0x477aa5
mov dl, byte [esi + 0x37]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 0x80
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x36]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 1
push 0x1252
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x36]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 4
jmp 0x477aa5
mov dl, byte [esi + 0x37]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 4
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x37]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 0x40
push 0x1252
push ecx
jmp 0x477aa6
cmp eax, 0x301
jg 0x478021
je 0x478008
add eax, 0xfffffdff
cmp eax, 6
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479ae8]
mov al, byte [esi + 0x34]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 1
jmp 0x477aa5
mov dl, byte [esi + 0x34]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 2
push 0x1252
push edx
jmp 0x477aa6
xor eax, eax
mov al, byte [esi + 0x35]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x37]
and eax, 0xf
cmp eax, 9
ja case.default.0x477cdb
jmp dword [eax*4 + 0x479b04]
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x15
jmp 0x477d15
push 0x66
jmp 0x477d15
push 0x67
jmp 0x477d15
push 0x68
jmp 0x477d15
push 0x69
jmp 0x477d15
push 0x70
jmp 0x477d15
push 0x71
jmp 0x477d15
push 0x72
jmp 0x477d15
push 0x73
jmp 0x477d15
push 0x74
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xe4]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebx, ecx
mov byte [esp + 0x168], 7
cmp eax, ebx
jae 0x477d5b
mov ebx, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x477d8f
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0xe4]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x477dee
cmp ebx, ecx
jne 0x477dee
mov eax, dword [esi + 4]
test eax, eax
jne 0x477da3
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x477dee
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x477dc0
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0xe4]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x477e2a
mov esi, dword [esi + 4]
test esi, esi
jne 0x477e0a
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [ecx + ebx], 0
mov eax, dword [esp + 0xe4]
mov byte [esp + 0x168], 4
jmp 0x477728
xor eax, eax
mov al, byte [esi + 0x33]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
mov al, byte [esi + 0x34]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x33]
shr eax, 3
and eax, 3
cmp eax, 3
ja case.default.0x477ebd
jmp dword [eax*4 + 0x479b2c]
push 0x43
jmp 0x477edf
push 1
jmp 0x477edf
push 2
jmp 0x477edf
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x47
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x84]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebx, ecx
mov byte [esp + 0x168], 8
cmp eax, ebx
jae 0x477f25
mov ebx, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x477f59
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x84]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x477fb8
cmp ebx, ecx
jne 0x477fb8
mov eax, dword [esi + 4]
test eax, eax
jne 0x477f6d
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x477fb8
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x477f8a
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x84]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x477ff4
mov esi, dword [esi + 4]
test esi, esi
jne 0x477fd4
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [ecx + ebx], 0
mov eax, dword [esp + 0x84]
mov byte [esp + 0x168], 4
jmp 0x477728
mov al, byte [esi + 0x37]
lea edx, [esp + 0x14]
push edx
push 0x1776
push 0x1775
and al, 4
jmp 0x477aa5
cmp eax, 0x401
jg 0x4783a9
je 0x47838e
add eax, 0xfffffcfe
cmp eax, 8
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479b3c]
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x34]
and eax, 3
cmp eax, 3
ja case.default.0x47805f
jmp dword [eax*4 + 0x479b60]
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x15
jmp 0x478081
push 0x77
jmp 0x478081
push 0x78
jmp 0x478081
push 0x79
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x124]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebx, ecx
mov byte [esp + 0x168], 9
cmp eax, ebx
jae 0x4780c7
mov ebx, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x4780fb
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x124]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x47815a
cmp ebx, ecx
jne 0x47815a
mov eax, dword [esi + 4]
test eax, eax
jne 0x47810f
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x47815a
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x47812c
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x124]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478196
mov esi, dword [esi + 4]
test esi, esi
jne 0x478176
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [ecx + ebx], 0
mov eax, dword [esp + 0x124]
mov byte [esp + 0x168], 4
jmp 0x477728
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
jmp 0x477aa0
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x36]
and eax, 3
cmp eax, 3
ja case.default.0x4781d6
jmp dword [eax*4 + 0x479b70]
push 0x76
jmp 0x4781f8
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 9
jmp 0x4781f8
push 0x78
jmp 0x4781f8
push 0x75
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00531810
lea ecx, [esp + 0x54]
push ecx
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebx, ecx
mov byte [esp + 0x168], 0xa
cmp eax, ebx
jae 0x47823b
mov ebx, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x47826e
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404c30
xor ebp, ebp
lea ecx, [esp + 0x14]
push ebp
push ebp
call fcn.00404c30
mov eax, dword [esp + 0x54]
mov byte [esp + 0x168], 4
cmp eax, ebp
jmp 0x47772a
xor ebp, ebp
cmp ebx, ebp
jbe 0x4782f8
cmp ebx, ecx
jne 0x4782f8
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x478288
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4782f8
mov eax, dword [esp + 0x18]
cmp eax, ebp
je 0x4782b3
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4782aa
cmp al, 0xff
je 0x4782aa
dec al
mov byte [ecx], al
jmp 0x4782b3
push ecx
call fcn.00556360
add esp, 4
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x4782cb
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x54]
cmp eax, ebp
jmp 0x47772a
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478332
mov esi, dword [esi + 4]
cmp esi, ebp
jne 0x478314
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00404d50
mov eax, dword [esp + 0x54]
mov byte [esp + 0x168], 4
cmp eax, ebp
jmp 0x47772a
mov al, byte [esi + 0x35]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
and al, 1
jmp 0x477aa5
xor ecx, ecx
mov cl, byte [esi + 0x32]
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fmul qword [0x5733f0]
jmp 0x479408
xor edx, edx
mov dl, byte [esi + 0x33]
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fmul qword [0x5733f0]
jmp 0x479408
mov cl, byte [esi + 0x32]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 8
push 0x1252
push ecx
jmp 0x477aa6
add eax, 0xfffffbfe
cmp eax, 8
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479b80]
mov al, byte [esi + 0x32]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
jmp 0x477aa3
mov dl, byte [esi + 0x32]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 1
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x35]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 2
push 0x1287
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x35]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
and al, 0x10
jmp 0x477aa5
mov dl, byte [esi + 0x35]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 8
push 0x1287
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x35]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 1
push 0x1287
push ecx
jmp 0x477aa6
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x34]
and eax, 7
cmp eax, 7
ja case.default.0x478472
jmp dword [eax*4 + 0x479ba4]
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 8
jmp 0x4784cd
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 5
jmp 0x4784cd
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 4
jmp 0x4784cd
push 0x80
jmp 0x4784cd
push 0x81
jmp 0x4784cd
push 0x82
jmp 0x4784cd
push 0x83
jmp 0x4784cd
push 0x84
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x104]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov ecx, dword [esi + 8]
mov eax, dword [0x57217c]
mov ebx, ecx
mov byte [esp + 0x168], 0xb
cmp eax, ebx
jae 0x478513
mov ebx, eax
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x47854b
push eax
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x104]
xor ebp, ebp
mov byte [esp + 0x168], 4
cmp eax, ebp
jmp 0x47772a
xor ebp, ebp
cmp ebx, ebp
jbe 0x4785d8
cmp ebx, ecx
jne 0x4785d8
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x478565
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4785d8
mov eax, dword [esp + 0x18]
cmp eax, ebp
je 0x478590
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x478587
cmp al, 0xff
je 0x478587
dec al
mov byte [ecx], al
jmp 0x478590
push ecx
call fcn.00556360
add esp, 4
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x4785a8
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x104]
cmp eax, ebp
jmp 0x47772a
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478612
mov esi, dword [esi + 4]
cmp esi, ebp
jne 0x4785f4
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00404d50
mov eax, dword [esp + 0x104]
mov byte [esp + 0x168], 4
cmp eax, ebp
jmp 0x47772a
xor ecx, ecx
mov cl, byte [esi + 0x33]
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
mov al, byte [esi + 0x36]
and eax, 7
cmp eax, 4
ja case.default.0x478649
jmp dword [eax*4 + 0x479bc4]
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 8
jmp 0x4786c3
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x85
jmp 0x4786c3
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x83
jmp 0x4786c3
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x82
jmp 0x4786c3
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x86
jmp 0x4786c3
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xc4]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov eax, dword [esi + 8]
mov edi, dword [0x57217c]
mov ebx, eax
mov byte [esp + 0x168], 0xc
cmp edi, ebx
jae 0x47870a
mov ebx, edi
lea ecx, [esp + 0x14]
cmp ecx, esi
jne 0x47878e
cmp dword [esp + 0x1c], ebx
jae 0x47871d
call fcn.00556597
lea ecx, [esp + 0x14]
call fcn.00405210
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, edi
jae 0x478732
mov edi, eax
test edi, edi
jbe 0x47876d
mov edx, dword [esp + 0x18]
sub eax, edi
push eax
lea ecx, [edx + ebx]
lea edx, [ecx + edi]
push edx
push ecx
call fcn.00556b00
mov esi, dword [esp + 0x28]
add esp, 0xc
sub esi, edi
lea ecx, [esp + 0x14]
push 0
push esi
call fcn.00404d70
test al, al
je 0x47876d
push esi
lea ecx, [esp + 0x18]
call fcn.00404d50
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0xc4]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x4787ed
cmp ebx, eax
jne 0x4787ed
mov eax, dword [esi + 4]
test eax, eax
jne 0x4787a2
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4787ed
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x4787bf
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0xc4]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478827
mov esi, dword [esi + 4]
test esi, esi
jne 0x478809
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00404d50
mov eax, dword [esp + 0xc4]
mov byte [esp + 0x168], 4
jmp 0x477728
xor eax, eax
mov al, byte [esi + 0x34]
sub eax, 0
je 0x478871
dec eax
je 0x478860
dec eax
je 0x47885c
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x67
jmp 0x478880
push 0x15
jmp 0x478873
push 0x15
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x10
jmp 0x478880
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 8
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x144]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov eax, dword [esi + 8]
mov edi, dword [0x57217c]
mov ebx, eax
mov byte [esp + 0x168], 0xd
cmp edi, ebx
jae 0x4788c7
mov ebx, edi
lea ecx, [esp + 0x14]
cmp ecx, esi
jne 0x47894b
cmp dword [esp + 0x1c], ebx
jae 0x4788da
call fcn.00556597
lea ecx, [esp + 0x14]
call fcn.00405210
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, edi
jae 0x4788ef
mov edi, eax
test edi, edi
jbe 0x47892a
mov edx, dword [esp + 0x18]
sub eax, edi
push eax
lea ecx, [edx + ebx]
lea edx, [edi + ecx]
push edx
push ecx
call fcn.00556b00
mov esi, dword [esp + 0x28]
add esp, 0xc
sub esi, edi
lea ecx, [esp + 0x14]
push 0
push esi
call fcn.00404d70
test al, al
je 0x47892a
push esi
lea ecx, [esp + 0x18]
call fcn.00404d50
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x144]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x4789aa
cmp ebx, eax
jne 0x4789aa
mov eax, dword [esi + 4]
test eax, eax
jne 0x47895f
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4789aa
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x47897c
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x144]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x4789e4
mov esi, dword [esi + 4]
test esi, esi
jne 0x4789c6
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00404d50
mov eax, dword [esp + 0x144]
mov byte [esp + 0x168], 4
jmp 0x477728
cmp eax, 0x70a
jg 0x479399
je case.0x47960e.2055
cmp eax, 0x606
jg 0x478fcf
je 0x478fb4
cmp eax, 0x506
jg 0x478d32
je 0x478d17
add eax, 0xfffffbf4
cmp eax, 0xf9
ja case.0x479a0a.2824
xor ecx, ecx
mov cl, byte [eax + 0x479bf4]
jmp dword [ecx*4 + 0x479bd8]
push 0x17
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
xor eax, eax
mov al, byte [esi + 0x37]
cmp eax, 0xf
ja case.default.0x478a65
jmp dword [eax*4 + 0x479cf0]
push 0x87
jmp 0x478b15
push 0x88
jmp 0x478b15
push 0x89
jmp 0x478b15
push 0x90
jmp 0x478b15
push 0x91
jmp 0x478b15
push 0x92
jmp 0x478b15
push 0x93
jmp 0x478b15
push 0x94
jmp 0x478b15
push 0x95
jmp 0x478b15
push 0x96
jmp 0x478b15
push 0x97
jmp 0x478b15
push 0x98
jmp 0x478b15
push 0x99
jmp 0x478b15
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0
jmp 0x478b15
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 1
jmp 0x478b15
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 2
jmp 0x478b15
push 0x11
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x67
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x64]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov eax, dword [esi + 8]
mov edi, dword [0x57217c]
mov ebx, eax
mov byte [esp + 0x168], 0xe
cmp edi, ebx
jae 0x478b59
mov ebx, edi
lea ecx, [esp + 0x14]
cmp ecx, esi
jne 0x478bda
cmp dword [esp + 0x1c], ebx
jae 0x478b6c
call fcn.00556597
lea ecx, [esp + 0x14]
call fcn.00405210
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, edi
jae 0x478b81
mov edi, eax
test edi, edi
jbe 0x478bbc
mov edx, dword [esp + 0x18]
sub eax, edi
push eax
lea ecx, [edx + ebx]
lea edx, [edi + ecx]
push edx
push ecx
call fcn.00556b00
mov esi, dword [esp + 0x28]
add esp, 0xc
sub esi, edi
lea ecx, [esp + 0x14]
push 0
push esi
call fcn.00404d70
test al, al
je 0x478bbc
push esi
lea ecx, [esp + 0x18]
call fcn.00404d50
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
mov eax, dword [esp + 0x64]
mov byte [esp + 0x168], 4
jmp 0x477728
test ebx, ebx
jbe 0x478c36
cmp ebx, eax
jne 0x478c36
mov eax, dword [esi + 4]
test eax, eax
jne 0x478bee
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x478c36
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x478c0b
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [esp + 0x168], 4
mov byte [eax - 1], cl
mov eax, dword [esp + 0x64]
jmp 0x477728
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478c72
mov esi, dword [esi + 4]
test esi, esi
jne 0x478c52
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [ecx + ebx], 0
mov eax, dword [esp + 0x64]
mov byte [esp + 0x168], 4
jmp 0x477728
xor edx, edx
xor eax, eax
mov dl, byte [esi + 0x33]
mov al, byte [esi + 0x34]
shl edx, 8
add edx, eax
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor ecx, ecx
xor edx, edx
mov cl, byte [esi + 0x32]
mov dl, byte [esi + 0x33]
shl ecx, 8
add ecx, edx
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
xor ecx, ecx
mov al, byte [esi + 0x35]
mov cl, byte [esi + 0x36]
shl eax, 8
add eax, ecx
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
mov al, byte [esi + 0x32]
lea edx, [esp + 0x14]
push edx
push 0x1061
push 0x1060
and al, 8
jmp 0x477aa5
mov dl, byte [esi + 0x32]
lea ecx, [esp + 0x14]
push ecx
push 0x1061
and dl, 4
push 0x1060
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x32]
lea eax, [esp + 0x14]
push eax
push 0x1061
and cl, 2
push 0x1060
push ecx
jmp 0x477aa6
add eax, 0xfffffaf9
cmp eax, 0xfe
ja case.0x479a0a.2824
xor edx, edx
mov dl, byte [eax + 0x479d4c]
jmp dword [edx*4 + 0x479d30]
mov al, byte [esi + 0x32]
and eax, 0x11
cmp eax, 0x11
ja case.0x478d64.4
xor ecx, ecx
mov cl, byte [eax + 0x479e60]
jmp dword [ecx*4 + 0x479e4c]
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x94
jmp 0x478db6
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x93
jmp 0x478db6
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x35
jmp 0x478db6
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x74]
push eax
call fcn.005388b0
add esp, 8
mov esi, eax
mov eax, dword [esi + 8]
mov edi, dword [0x57217c]
mov ebx, eax
mov byte [esp + 0x168], 0xf
cmp edi, ebx
jae 0x478dfa
mov ebx, edi
lea ecx, [esp + 0x14]
cmp ecx, esi
jne 0x478e6f
cmp dword [esp + 0x1c], ebx
jae 0x478e0d
call fcn.00556597
lea ecx, [esp + 0x14]
call fcn.00405210
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, edi
jae 0x478e22
mov edi, eax
test edi, edi
jbe 0x478e5d
mov edx, dword [esp + 0x18]
sub eax, edi
push eax
lea ecx, [edx + ebx]
lea edx, [edi + ecx]
push edx
push ecx
call fcn.00556b00
mov esi, dword [esp + 0x28]
add esp, 0xc
sub esi, edi
lea ecx, [esp + 0x14]
push 0
push esi
call fcn.00404d70
test al, al
je 0x478e5d
push esi
lea ecx, [esp + 0x18]
call fcn.00404d50
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
jmp 0x478ef8
test ebx, ebx
jbe 0x478ebc
cmp ebx, eax
jne 0x478ebc
mov eax, dword [esi + 4]
test eax, eax
jne 0x478e83
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x478ebc
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x478ea0
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x478ef8
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x478ef8
mov esi, dword [esi + 4]
test esi, esi
jne 0x478ed8
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [ecx + ebx], 0
mov eax, dword [esp + 0x74]
mov byte [esp + 0x168], 4
test eax, eax
je case.0x479a0a.2824
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x478f23
cmp al, 0xff
je 0x478f23
dec al
mov byte [ecx], al
jmp case.0x479a0a.2824
push ecx
call fcn.00556360
add esp, 4
jmp case.0x479a0a.2824
mov al, byte [esi + 0x32]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 1
jmp 0x477aa5
mov dl, byte [esi + 0x32]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 2
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x32]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 4
push 0x1252
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x38]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 0x20
jmp 0x477aa5
mov dl, byte [esi + 0x38]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 0x10
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x34]
lea eax, [esp + 0x14]
push eax
push 0x1772
and cl, 1
push 0x1895
push ecx
jmp 0x477aa6
cmp eax, 0x703
jg 0x4792a7
je 0x47928f
add eax, 0xfffff9f9
cmp eax, 0xfb
ja case.0x479a0a.2824
xor edx, edx
mov dl, byte [eax + 0x479e90]
jmp dword [edx*4 + 0x479e74]
mov cl, byte [esi + 0x38]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 4
push 0x1252
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x38]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 8
jmp 0x477aa5
mov dl, byte [esi + 0x38]
lea ecx, [esp + 0x14]
push ecx
push 0x1772
and dl, 1
push 0x1895
push edx
jmp 0x477aa6
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x33]
and eax, 0xf
cmp eax, 0xb
ja case.default.0x479066
jmp dword [eax*4 + 0x479f8c]
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x96
jmp 0x4790ef
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x97
jmp 0x4790ef
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x98
jmp 0x4790ef
push 0x18
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x99
jmp 0x4790ef
push 0
jmp 0x4790ef
push 1
jmp 0x4790ef
push 2
jmp 0x4790ef
push 3
jmp 0x4790ef
push 4
jmp 0x4790ef
push 5
jmp 0x4790ef
push 6
jmp 0x4790ef
push 7
jmp 0x4790ef
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00531810
lea ecx, [esp + 0x94]
push ecx
call fcn.005388b0
add esp, 8
mov esi, eax
mov eax, dword [esi + 8]
mov edi, dword [0x57217c]
mov ebx, eax
mov byte [esp + 0x168], 0x10
cmp edi, ebx
jae 0x479136
mov ebx, edi
lea edx, [esp + 0x14]
cmp edx, esi
jne 0x4791aa
cmp dword [esp + 0x1c], ebx
jae 0x479149
call fcn.00556597
lea ecx, [esp + 0x14]
call fcn.00405210
mov eax, dword [esp + 0x1c]
sub eax, ebx
cmp eax, edi
jae 0x47915e
mov edi, eax
test edi, edi
jbe 0x479198
mov ecx, dword [esp + 0x18]
sub eax, edi
add ebx, ecx
push eax
lea ecx, [edi + ebx]
push ecx
push ebx
call fcn.00556b00
mov esi, dword [esp + 0x28]
add esp, 0xc
sub esi, edi
lea ecx, [esp + 0x14]
push 0
push esi
call fcn.00404d70
test al, al
je 0x479198
push esi
lea ecx, [esp + 0x18]
call fcn.00404d50
push 0
push 0
lea ecx, [esp + 0x1c]
call fcn.00404c30
jmp 0x479233
test ebx, ebx
jbe 0x4791f7
cmp ebx, eax
jne 0x4791f7
mov eax, dword [esi + 4]
test eax, eax
jne 0x4791be
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x4791f7
push 1
lea ecx, [esp + 0x18]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x4791db
mov eax, 0x572184
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x20], esi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x479233
push 1
push ebx
lea ecx, [esp + 0x1c]
call fcn.00404d70
test al, al
je 0x479233
mov esi, dword [esi + 4]
test esi, esi
jne 0x479213
mov esi, 0x572184
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov byte [eax + ebx], 0
lea ecx, [esp + 0x90]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
xor ecx, ecx
mov cl, byte [esi + 0x36]
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fmul qword [0x572c30]
fadd qword [0x5733e8]
jmp 0x479408
xor eax, eax
xor ecx, ecx
mov cl, byte [esi + 0x35]
mov al, byte [esi + 0x34]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
fild dword [esp + 0x28]
fmul qword [0x5733e0]
fild dword [esp + 0x24]
jmp 0x4794d7
xor edx, edx
mov dl, byte [esi + 0x32]
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fsub qword [0x5733d8]
jmp 0x479408
add eax, 0xfffff8fc
cmp eax, 5
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479fbc]
xor eax, eax
mov al, byte [esi + 0x33]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
mov al, byte [esi + 0x34]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
mov al, byte [esi + 0x35]
lea edx, [esp + 0x14]
push edx
push 0x1061
push 0x1060
jmp 0x477aa3
mov dl, byte [esi + 0x35]
lea ecx, [esp + 0x14]
push ecx
push 0x1061
and dl, 1
push 0x1060
push edx
jmp 0x477aa6
xor eax, eax
xor ecx, ecx
mov cl, byte [esi + 0x37]
mov al, byte [esi + 0x36]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
fild dword [esp + 0x28]
fmul qword [0x5733e0]
fild dword [esp + 0x24]
jmp 0x4794d7
xor eax, eax
xor ecx, ecx
mov al, byte [esi + 0x33]
mov cl, byte [esi + 0x32]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov dword [esp + 0x24], ecx
fmul qword [0x572c30]
fild dword [esp + 0x24]
jmp 0x4793fa
cmp eax, 0x801
jg 0x4795ef
je 0x47953a
add eax, 0xfffff8f5
cmp eax, 8
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x479fd4]
mov dl, byte [esi + 0x34]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 1
push 0x1252
push edx
jmp 0x477aa6
xor eax, eax
xor ecx, ecx
mov al, byte [esi + 0x33]
mov cl, byte [esi + 0x32]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov dword [esp + 0x24], ecx
fmul qword [0x572c30]
fild dword [esp + 0x24]
fmul qword [0x5733d0]
faddp st(1)
fsub qword [0x5733c8]
fstp qword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push ecx
push edx
lea eax, [esp + 0x44]
push str._.2f
push eax
call fcn.00556aa4
add esp, 0x10
jmp 0x477ac9
xor edx, edx
mov dl, byte [esi + 0x35]
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
mov al, byte [esi + 0x34]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor ecx, ecx
mov cl, byte [esi + 0x35]
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor edx, edx
mov dl, byte [esi + 0x36]
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
mov al, byte [esi + 0x32]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
xor eax, eax
xor ecx, ecx
mov cl, byte [esi + 0x38]
mov al, byte [esi + 0x37]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
fild dword [esp + 0x24]
fmul qword [0x5733e0]
fild dword [esp + 0x28]
fmul qword [0x5733c0]
shl eax, 8
add eax, ecx
faddp st(1)
cmp eax, 0xffff
fstp qword [esp + 0x28]
jne 0x47940c
mov dword [esp + 0x28], 0x66666666
mov dword [esp + 0x2c], 0x40406666
jmp 0x47940c
xor eax, eax
mov al, byte [esi + 0x33]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, 0x80808081
shl ecx, 2
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp qword [esp + 0x28]
jmp case.0x479a0a.2824
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x35]
and eax, 0xf
cmp eax, 7
ja case.default.0x479552
jmp dword [eax*4 + 0x479ff8]
push 8
jmp 0x479598
push 9
jmp 0x479598
push 0x10
jmp 0x479598
push 0x11
jmp 0x479598
push 0x12
jmp 0x479598
push 0x13
jmp 0x479598
push 0x14
jmp 0x479598
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x44
jmp 0x479598
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xb4]
push eax
call fcn.005388b0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 0x11
call fcn.00418640
lea ecx, [esp + 0xb0]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
cmp eax, 0x901
jg 0x479883
je case.0x478040.772
add eax, 0xfffff7fe
cmp eax, 5
ja case.0x479a0a.2824
jmp dword [eax*4 + 0x47a018]
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
mov al, byte [esi + 0x36]
and eax, 0xf
cmp eax, 0xf
ja case.default.0x47962d
jmp dword [eax*4 + 0x47a030]
push 0x15
jmp 0x479686
push 0x16
jmp 0x479686
push 0x17
jmp 0x479686
push 0x18
jmp 0x479686
push 0x19
jmp 0x479686
push 0x20
jmp 0x479686
push 0x21
jmp 0x479686
push 0x22
jmp 0x479686
push 0x23
jmp 0x479686
push 0x24
jmp 0x479686
push 0x25
jmp 0x479686
push 0x26
jmp 0x479686
push 0x27
jmp 0x479686
push 0x28
jmp 0x479686
push 0x29
jmp 0x479686
push 0x30
jmp 0x479686
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0xff
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xd4]
push eax
call fcn.005388b0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 0x12
call fcn.00418640
lea ecx, [esp + 0xd0]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
mov al, byte [esi + 0x38]
and eax, 3
cmp eax, 3
ja case.default.0x4796e8
jmp dword [eax*4 + 0x47a070]
push 0x13
jmp 0x4796f5
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x31
jmp 0x479717
push 0x13
jmp 0x47970a
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x32
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0xf4]
push eax
call fcn.005388b0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 0x13
call fcn.00418640
lea ecx, [esp + 0xf0]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
mov al, byte [esi + 0x37]
and eax, 3
cmp eax, 3
ja case.default.0x479779
jmp dword [eax*4 + 0x47a080]
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x15
jmp 0x4797c2
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x14
jmp 0x4797c2
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x33
jmp 0x4797c2
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x34
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x114]
push eax
call fcn.005388b0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 0x14
call fcn.00418640
lea ecx, [esp + 0x110]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
mov dl, byte [esi + 0x34]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 2
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x34]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 1
push 0x1252
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x38]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 1
jmp 0x477aa5
mov dl, byte [esi + 0x37]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 1
push 0x1252
push edx
jmp 0x477aa6
cmp eax, 0xb03
jg 0x4799f2
je 0x4799d7
cmp eax, 0xb01
jg 0x4799b3
je 0x479998
cmp eax, 0x902
je 0x47997d
cmp eax, 0xa01
jne case.0x479a0a.2824
mov al, byte [esi + 0x32]
and eax, 7
add eax, 0xfffffffd
cmp eax, 4
ja case.0x4798c9.5
jmp dword [eax*4 + 0x47a090]
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x36
jmp 0x479926
push 0x13
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x86
jmp 0x479926
push 0x19
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x37
jmp 0x479926
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x43
jmp 0x479926
push 0x12
push 4
lea ecx, [esp + 0x18]
call fcn.00531ad0
push 0x46
push 5
lea ecx, [esp + 0x18]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
lea eax, [esp + 0x134]
push eax
call fcn.005388b0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 0x15
call fcn.00418640
lea ecx, [esp + 0x130]
mov byte [esp + 0x168], 4
call fcn.00404900
jmp case.0x479a0a.2824
mov dl, byte [esi + 0x38]
lea ecx, [esp + 0x14]
push ecx
push 0x1243
and dl, 1
push 0x1252
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x33]
lea eax, [esp + 0x14]
push eax
push 0x1243
and cl, 2
push 0x1252
push ecx
jmp 0x477aa6
cmp eax, 0xb02
jne case.0x479a0a.2824
mov al, byte [esi + 0x33]
lea edx, [esp + 0x14]
push edx
push 0x1243
push 0x1252
and al, 1
jmp 0x477aa5
mov dl, byte [esi + 0x34]
lea ecx, [esp + 0x14]
push ecx
push 0x1288
and dl, 1
push 0x1287
push edx
jmp 0x477aa6
add eax, 0xfffff4fc
cmp eax, 0xfd
ja case.0x479a0a.2824
xor ecx, ecx
mov cl, byte [eax + 0x47a0b8]
jmp dword [ecx*4 + 0x47a0a4]
mov al, byte [esi + 0x34]
lea edx, [esp + 0x14]
push edx
push 0x1288
push 0x1287
jmp 0x477aa3
mov dl, byte [esi + 0x34]
lea ecx, [esp + 0x14]
push ecx
push 0x1210
and dl, 4
push 0x1209
push edx
jmp 0x477aa6
mov cl, byte [esi + 0x34]
lea eax, [esp + 0x14]
push eax
push 0x1288
and cl, 8
push 0x1287
push ecx
jmp 0x477aa6
mov al, byte [esi + 0x34]
lea edx, [esp + 0x14]
push edx
push 0x1210
push 0x1209
and al, 4
jmp 0x477aa5