Function at 0x30045241
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
lea ebp, [esp - 0x64]
sub esp, 0xec
push ebx
push esi
xor ebx, ebx
mov esi, ecx
cmp byte [esi + 0x18], bl
mov byte [ebp + 0x57], bl
je 0x30045261
xor al, al
jmp 0x30046891
mov eax, dword [ebp + 0x78]
and eax, dword [ebp + 0x7c]
push edi
cmp eax, 0xffffffff
mov edi, dword [ebp + 0x6c]
jne 0x30045293
mov ecx, esi
call fcn.30044a15
mov eax, dword [edi]
push 1
push ebx
push ebx
mov ecx, edi
mov byte [ebp + 0x57], 1
call dword [eax + 0xc]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov dword [ebp + 0x78], eax
mov dword [ebp + 0x7c], edx
mov eax, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x74]
mov dword [esi + 0x15470], eax
sub eax, 1
mov dword [ebp - 0x28], eax
mov eax, ecx
sbb eax, ebx
mov dword [esi + 0x15474], ecx
mov byte [ebp + 0x6f], bl
mov dword [ebp - 0x24], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
cmp edx, dword [ebp - 0x24]
jl 0x300452da
jg 0x300452c8
cmp eax, dword [ebp - 0x28]
jb 0x300452da
mov eax, dword [esi + 0x15468]
or eax, dword [esi + 0x1546c]
je 0x30046f99
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
cmp eax, dword [ebp + 0x78]
jne 0x300452ef
cmp edx, dword [ebp + 0x7c]
je 0x300466be
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
mov dword [ebp + 0x28], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
mov dword [ebp + 0x2c], edx
call fcn.300fcf1d
mov dword [ebp + 0x5c], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
mov dword [ebp + 0x60], edx
call fcn.300fcf1d
cmp dword [ebp + 0x60], ebx
mov dword [ebp + 0x58], eax
jl 0x30046fa2
jg 0x30045335
cmp dword [ebp + 0x5c], ebx
jbe 0x30046fa2
cmp dword [ebp + 0x5c], 1
jne 0x3004536e
cmp dword [ebp + 0x60], ebx
jne 0x3004536e
lea eax, [ebp + 0x6f]
push eax
push 8
push edi
mov ecx, esi
call fcn.300fcf1d
cmp edx, ebx
mov dword [ebp + 0x5c], eax
mov dword [ebp + 0x60], edx
jl 0x30046fb6
jg 0x30045366
cmp eax, ebx
jb 0x30046fb6
add dword [ebp + 0x5c], 0xfffffff8
adc dword [ebp + 0x60], 0xffffffff
mov eax, dword [ebp + 0x5c]
add dword [ebp + 0x28], eax
mov eax, dword [ebp + 0x60]
adc dword [ebp + 0x2c], eax
add dword [ebp + 0x5c], 0xfffffff8
adc dword [ebp + 0x60], 0xffffffff
cmp byte [ebp + 0x6f], bl
jne 0x30046fba
mov eax, dword [ebp + 0x58]
mov ecx, 0x6d6f6f76
cmp eax, ecx
ja 0x30045d13
je 0x30046810
mov ecx, 0x64736370
cmp eax, ecx
ja 0x3004564e
je 0x3004694a
cmp eax, 0x61757468
je 0x3004694a
cmp eax, 0x61766343
je 0x30046fc1
cmp eax, 0x6368706c
je 0x30045546
cmp eax, 0x636f3634
je 0x300453f2
cmp eax, 0x63707274
je 0x3004694a
cmp eax, 0x63747473
jne 0x300466a7
cmp dword [esi + 0x15450], ebx
je 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
mov dword [ebp + 0x50], eax
je 0x30046fb6
cmp eax, 0x155555
ja 0x30046fb6
add dword [ebp + 0x5c], 0xfffffff8
mov eax, dword [ebp + 0x58]
adc dword [ebp + 0x60], 0xffffffff
sub eax, 0x636f3634
je 0x30046d0b
sub eax, 0x53e3f
je 0x30046c59
sub eax, 0xfffeefc
je 0x30046d0b
sub eax, 0xff4
je 0x30046afc
sub eax, 0x10
je 0x30046a50
sub eax, 0x100
jne 0x300466a7
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea eax, [eax + esi + 0x11fb4]
cmp dword [eax], ebx
jne 0x30046fb6
mov ecx, dword [ebp + 0x50]
mov dword [eax], ecx
mov eax, ecx
shl eax, 3
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x50], ebx
mov dword [ecx + esi + 0x11fb8], eax
mov dword [ebp + 0x58], ebx
jbe 0x30046f7f
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
imul ecx, ecx, 0xd0
mov ecx, dword [ecx + esi + 0x11fb8]
mov dword [ecx + edx*8], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
test eax, eax
jns 0x30045514
xor eax, eax
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xfffffff8
mov ecx, dword [ecx + esi + 0x11fb8]
mov dword [ecx + edx*8 + 4], eax
adc dword [ebp + 0x60], 0xffffffff
inc dword [ebp + 0x58]
mov eax, dword [ebp + 0x58]
cmp eax, dword [ebp + 0x50]
jb 0x300454d9
jmp 0x30046f7f
cmp dword [esi + 0x15450], ebx
je 0x30046fb6
cmp dword [esi + 0x14], ebx
jne 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x40], eax
mov dword [esi + 0x10], eax
imul eax, eax, 0x108
push eax
call fcn.300367dc
cmp eax, ebx
pop ecx
mov dword [ebp + 0x34], eax
je 0x300455bc
push 0x30044434
push dword [ebp + 0x40]
push 0x108
push eax
call fcn.3000101a
mov eax, dword [ebp + 0x34]
jmp 0x300455be
xor eax, eax
cmp dword [esi + 0x10], ebx
mov dword [esi + 0x14], eax
mov dword [ebp + 0x4c], ebx
jbe 0x300466a7
mov dword [ebp + 0x50], ebx
lea eax, [ebp + 0x6f]
push eax
push 8
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [ebp + 0x50]
mov ebx, dword [esi + 0x14]
mov dword [ecx + ebx], eax
mov dword [ecx + ebx + 4], edx
mov eax, dword [esi + 0x14]
xor ebx, ebx
cmp dword [ecx + eax + 4], ebx
jl 0x30046fb6
jg 0x30045605
cmp dword [ecx + eax], ebx
jb 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [ebp + 0x50]
mov edx, dword [edi]
push ebx
push eax
mov dword [ebp + 0x40], eax
mov eax, dword [esi + 0x14]
lea eax, [ecx + eax + 8]
push eax
mov ecx, edi
call dword [edx + 0x10]
mov eax, dword [esi + 0x14]
add eax, dword [ebp + 0x50]
mov ecx, dword [ebp + 0x40]
inc dword [ebp + 0x4c]
add dword [ebp + 0x50], 0x108
mov byte [eax + ecx + 8], bl
mov eax, dword [ebp + 0x4c]
cmp eax, dword [esi + 0x10]
jb 0x300455d0
jmp 0x300466a7
cmp eax, 0x65736473
je 0x30045ca0
cmp eax, 0x696c7374
je 0x30045c8b
cmp eax, 0x6d646864
je 0x30045691
cmp eax, 0x6d646961
je 0x30046810
cmp eax, 0x6d657461
je 0x30046817
cmp eax, 0x6d696e66
je 0x30046810
jmp 0x300466a7
mov eax, dword [esi + 0x15450]
cmp eax, ebx
je 0x30046fb6
imul eax, eax, 0xd0
mov ecx, dword [eax + esi + 0x11fd0]
or ecx, dword [eax + esi + 0x11fd4]
jne 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
jne 0x3004577f
mov eax, dword [edi]
push ebx
push ebx
push 0xb
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fcc], eax
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
cmp dword [eax + esi + 0x11fcc], ebx
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fd0], eax
mov dword [ecx + esi + 0x11fd4], edx
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov ecx, dword [eax + esi + 0x11fd0]
or ecx, dword [eax + esi + 0x11fd4]
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xffffffea
jmp 0x30045849
cmp eax, 1
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 0x13
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fcc], eax
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
cmp dword [eax + esi + 0x11fcc], ebx
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 8
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fd0], eax
mov dword [ecx + esi + 0x11fd4], edx
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov ecx, dword [eax + esi + 0x11fd0]
mov eax, dword [eax + esi + 0x11fd4]
mov edx, ecx
or edx, eax
je 0x300466a7
cmp eax, ebx
jl 0x30046fb6
jg 0x3004582b
cmp ecx, ebx
jb 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xffffffde
adc dword [ebp + 0x60], 0xffffffff
mov word [ecx + esi + 0x11fd8], ax
jmp 0x30046f7f
cmp dword [ebp + 0x60], ebx
jl 0x300466a7
jg 0x3004586f
cmp dword [ebp + 0x5c], 8
jb 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x44], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
mov dword [ebp + 0x48], edx
call fcn.300fcf1d
cmp dword [ebp + 0x48], ebx
mov dword [ebp + 0x58], eax
jl 0x300466a7
jg 0x300458a8
cmp dword [ebp + 0x44], ebx
jbe 0x300466a7
mov eax, dword [ebp + 0x48]
cmp eax, dword [ebp + 0x60]
jg 0x300466a7
jl 0x300458c2
mov eax, dword [ebp + 0x44]
cmp eax, dword [ebp + 0x5c]
ja 0x300466a7
add dword [ebp + 0x5c], 0xfffffff8
adc dword [ebp + 0x60], 0xffffffff
add dword [ebp + 0x44], 0xfffffff8
adc dword [ebp + 0x48], 0xffffffff
jmp 0x30045c65
cmp dword [ebp + 0x48], ebx
jl 0x30045c75
jg 0x300458ec
cmp dword [ebp + 0x44], 8
jb 0x30045c75
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x38], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
mov dword [ebp + 0x3c], edx
call fcn.300fcf1d
mov ecx, dword [ebp + 0x48]
cmp dword [ebp + 0x3c], ecx
jg 0x30045c75
jl 0x30045928
mov ecx, dword [ebp + 0x38]
cmp ecx, dword [ebp + 0x44]
ja 0x30045c75
add dword [ebp + 0x5c], 0xfffffff8
mov ecx, dword [ebp + 0x38]
adc dword [ebp + 0x60], 0xffffffff
add dword [ebp + 0x44], 0xfffffff8
adc dword [ebp + 0x48], 0xffffffff
or ecx, dword [ebp + 0x3c]
je 0x30045c65
add dword [ebp + 0x38], 0xfffffff8
adc dword [ebp + 0x3c], 0xffffffff
cmp eax, 0x64617461
jne 0x30045c49
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp dword [ebp + 0x58], 0x7075726c
mov dword [ebp + 0x4c], eax
je 0x3004597a
cmp dword [ebp + 0x58], 0x65676964
jne 0x30045981
mov dword [ebp + 0x4c], 1
mov eax, dword [esi + 0x1544c]
mov ecx, dword [ebp + 0x4c]
lea eax, [eax + eax*8]
shl eax, 5
mov dword [eax + esi + 0x3c], ecx
mov eax, dword [esi + 0x1544c]
mov ecx, dword [ebp + 0x58]
lea eax, [eax + eax*8]
push ebx
shl eax, 5
mov dword [eax + esi + 0x38], ecx
mov eax, dword [edi]
push ebx
push 4
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xfffffff8
adc dword [ebp + 0x60], 0xffffffff
add dword [ebp + 0x44], 0xfffffff8
adc dword [ebp + 0x48], 0xffffffff
add dword [ebp + 0x38], 0xfffffff8
adc dword [ebp + 0x3c], 0xffffffff
cmp dword [ebp + 0x48], ebx
jl 0x30045c49
jg 0x300459de
cmp dword [ebp + 0x44], ebx
jbe 0x30045c49
mov eax, dword [ebp + 0x4c]
cmp eax, ebx
je 0x30045b1f
cmp eax, 1
je 0x30045a98
cmp eax, 0xc
jbe 0x30045c49
cmp eax, 0xe
jbe 0x30045a0e
cmp eax, 0x15
je 0x30045b4a
jmp 0x30045c49
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push ebx
push 0x400000
call fcn.300fcf1d
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
mov dword [ecx + esi + 0x148], eax
push eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
mov dword [ecx + esi + 0x14c], edx
call fcn.300367dc
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
add esp, 0x14
push dword [ebp - 0x1c]
shl ecx, 5
push dword [ebp - 0x20]
mov dword [ecx + esi + 0x150], eax
mov eax, dword [esi + 0x1544c]
mov edx, dword [edi]
lea eax, [eax + eax*8]
shl eax, 5
push dword [eax + esi + 0x150]
mov ecx, edi
call dword [edx + 0x10]
mov ecx, dword [ebp - 0x20]
sub dword [ebp + 0x5c], ecx
mov eax, dword [ebp - 0x1c]
sbb dword [ebp + 0x60], eax
sub dword [ebp + 0x44], ecx
sbb dword [ebp + 0x48], eax
sub dword [ebp + 0x38], ecx
sbb dword [ebp + 0x3c], eax
jmp 0x30045c43
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push ebx
push 0xffff
call fcn.300fcf1d
mov dword [ebp - 0x18], eax
inc eax
push eax
mov dword [ebp - 0x14], edx
call fcn.300367dc
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
add esp, 0x14
push dword [ebp - 0x14]
shl ecx, 5
push dword [ebp - 0x18]
mov dword [ecx + esi + 0x144], eax
mov eax, dword [esi + 0x1544c]
mov edx, dword [edi]
lea eax, [eax + eax*8]
shl eax, 5
push dword [eax + esi + 0x144]
mov ecx, edi
call dword [edx + 0x10]
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
mov ecx, dword [eax + esi + 0x144]
mov eax, dword [ebp - 0x18]
sub dword [ebp + 0x5c], eax
mov byte [eax + ecx], bl
mov ecx, dword [ebp - 0x14]
sbb dword [ebp + 0x60], ecx
sub dword [ebp + 0x44], eax
sbb dword [ebp + 0x48], ecx
sub dword [ebp + 0x38], eax
sbb dword [ebp + 0x3c], ecx
jmp 0x30045c43
cmp dword [ebp + 0x58], 0x74726b6e
je 0x30045bdd
cmp dword [ebp + 0x58], 0x6469736b
jne 0x30045b4a
cmp dword [ebp + 0x48], ebx
jg 0x30045bdd
jl 0x30045b4a
cmp dword [ebp + 0x44], 6
jae 0x30045bdd
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
cmp dword [eax + esi + 0x40], 0x40
jae 0x30045c43
push ebx
push 4
push dword [ebp + 0x48]
push dword [ebp + 0x44]
call fcn.300fcf1d
mov ecx, dword [esi + 0x1544c]
add esp, 0x10
mov dword [ebp + 0x40], ecx
lea ecx, [ebp + 0x6f]
push ecx
push eax
push edi
mov ecx, esi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
call fcn.300fcf1d
mov ecx, dword [ebp + 0x40]
lea edx, [ecx + ecx*8]
shl edx, 5
mov edx, dword [edx + esi + 0x40]
lea ecx, [ecx + ecx*8]
lea ecx, [edx + ecx*8]
mov dword [esi + ecx*4 + 0x44], eax
mov eax, dword [esi + 0x1544c]
mov ecx, dword [ebp - 0x30]
lea eax, [eax + eax*8]
shl eax, 5
lea eax, [eax + esi + 0x40]
inc dword [eax]
sub dword [ebp + 0x5c], ecx
mov eax, dword [ebp - 0x2c]
sbb dword [ebp + 0x60], eax
sub dword [ebp + 0x44], ecx
sbb dword [ebp + 0x48], eax
sub dword [ebp + 0x38], ecx
sbb dword [ebp + 0x3c], eax
mov eax, dword [ebp + 0x44]
or eax, dword [ebp + 0x48]
jne 0x30045b4a
jmp 0x30045c43
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
mov dword [ecx + esi + 0x44], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
mov dword [ecx + esi + 0x48], eax
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
add dword [ebp + 0x44], 0xfffffffa
mov dword [eax + esi + 0x40], 2
adc dword [ebp + 0x48], 0xffffffff
inc dword [esi + 0x1544c]
mov ecx, dword [ebp + 0x38]
sub dword [ebp + 0x5c], ecx
mov eax, dword [ebp + 0x3c]
mov edx, dword [edi]
sbb dword [ebp + 0x60], eax
sub dword [ebp + 0x44], ecx
push ebx
push eax
sbb dword [ebp + 0x48], eax
push ecx
mov ecx, edi
call dword [edx + 0xc]
cmp dword [esi + 0x1544c], 0x100
jb 0x300458d7
mov ecx, dword [ebp + 0x44]
mov eax, dword [ebp + 0x48]
sub dword [ebp + 0x5c], ecx
mov edx, dword [edi]
push ebx
sbb dword [ebp + 0x60], eax
push eax
push ecx
mov ecx, edi
call dword [edx + 0xc]
cmp dword [esi + 0x1544c], 0x100
jb 0x3004585a
jmp 0x300466a7
cmp dword [esi + 0x15450], ebx
je 0x30046fb6
cmp dword [esi + 0x15478], ebx
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
test eax, eax
jne 0x300466be
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 3
jne 0x30047038
cmp edx, ebx
jne 0x30047038
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
test al, al
js 0x30045cf8
push ebx
push ebx
push 3
jmp 0x3004703c
mov ecx, 0x73747373
cmp eax, ecx
ja 0x30046799
je 0x300453f2
mov ecx, eax
sub ecx, 0x6d766864
je 0x300466cf
sub ecx, 0x2ee010a
je 0x300465f8
sub ecx, 0x30ff8fe
je 0x30046810
sub ecx, 0x103
je 0x300453f2
sub ecx, 0xff4
je 0x300453f2
dec ecx
jne 0x300466a7
mov eax, dword [esi + 0x15450]
cmp eax, ebx
je 0x30046fb6
imul eax, eax, 0xd0
cmp dword [eax + esi + 0x11f94], ebx
jne 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
mov dword [ebp + 0x58], eax
je 0x30046fb6
cmp eax, 0x24924
ja 0x30046fb6
add dword [ebp + 0x5c], 0xfffffff8
mov ecx, dword [esi + 0x15450]
adc dword [ebp + 0x60], 0xffffffff
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11f94], eax
imul eax, eax, 0x70
add eax, 4
push eax
call fcn.300367dc
cmp eax, ebx
pop ecx
je 0x30045e1b
mov ecx, dword [ebp + 0x58]
push 0x300443ed
push ecx
mov dword [eax], ecx
add eax, 4
push 0x70
push eax
mov dword [ebp + 0x40], eax
call fcn.3000101a
mov eax, dword [ebp + 0x40]
jmp 0x30045e1d
xor eax, eax
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x58], ebx
mov dword [ecx + esi + 0x11f98], eax
jbe 0x30045f2e
mov eax, dword [ebp + 0x58]
mov dword [ebp + 0x34], ebx
mov dword [ebp + 0x40], eax
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov eax, dword [eax + esi + 0x11f98]
add eax, dword [ebp + 0x34]
mov ecx, esi
mov dword [esi + 0x15478], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
call fcn.300fcf1d
mov dword [ebp + 0x50], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
push ebx
mov dword [ecx], eax
mov eax, dword [edi]
push ebx
push 4
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x15478]
mov eax, dword [eax]
cmp eax, 0x68323634
ja 0x30046199
je 0x30045f68
sub eax, 0x2e6d7033
je 0x30046460
sub eax, 0x19c4c601
je 0x30045f68
sub eax, 0x193b2ffc
je 0x30045f39
sub eax, 3
je 0x30045f39
sub eax, 0x8fcfe
je 0x30045f68
sub eax, 0x5f302ef
jne 0x30045f08
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
mov byte [esi + 0x20], 1
mov ecx, dword [ebp + 0x50]
add ecx, 0xfffffff0
push ebx
push ebx
push ecx
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
mov eax, dword [ebp + 0x50]
sub dword [ebp + 0x5c], eax
sbb dword [ebp + 0x60], ebx
add dword [ebp + 0x34], 0x70
dec dword [ebp + 0x40]
jne 0x30045e42
mov dword [esi + 0x15478], ebx
jmp 0x30046f7f
mov ecx, dword [ebp + 0x50]
mov eax, dword [edi]
push ebx
add ecx, 0xfffffff0
push ebx
push ecx
mov ecx, edi
call dword [eax + 0xc]
cmp byte [esi + 0x1e], bl
jne 0x30045f18
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [esi + 0x1e], 1
mov byte [eax + esi + 0x11f6b], 1
jmp 0x30045f18
mov eax, dword [edi]
push ebx
push ebx
push 0x10
mov ecx, edi
call dword [eax + 0xc]
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f68], 1
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [esi + 0x30], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [esi + 0x34], eax
add ecx, esi
mov edx, dword [ecx + 0x11f6c]
mov ecx, dword [ecx + 0x11f78]
imul edx, dword [esi + 0x30]
imul ecx, eax
lea eax, [edx + ecx + 0x8000]
cdq
mov ecx, 0x10000
idiv ecx
mov ecx, dword [esi + 0x15478]
push ebx
push ebx
push 8
mov dword [esi + 0x30], eax
mov dword [ecx + 0x18], eax
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
add eax, esi
mov ecx, dword [eax + 0x11f70]
mov eax, dword [eax + 0x11f7c]
imul ecx, dword [esi + 0x30]
imul eax, dword [esi + 0x34]
lea eax, [ecx + eax + 0x8000]
cdq
mov ecx, 0x10000
idiv ecx
mov ecx, dword [esi + 0x15478]
mov dword [esi + 0x34], eax
mov dword [ecx + 0x1c], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x3004618e
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 1
jne 0x3004618e
cmp edx, ebx
jne 0x3004618e
mov eax, dword [edi]
push ebx
push ebx
push 0x20
mov ecx, edi
call dword [eax + 0xc]
mov eax, dword [edi]
push ebx
push ebx
push 2
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 0xffff
jne 0x3004618e
cmp edx, ebx
jne 0x3004618e
mov eax, dword [esi + 0x15478]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x50]
mov eax, 0x61766331
add edx, 0xffffffaa
cmp ecx, eax
jne 0x3004615f
cmp edx, 8
jl 0x3004615b
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
mov ecx, eax
mov eax, dword [ebp + 0x50]
add eax, 0xffffffaa
mov dword [ebp - 0x34], edx
mov dword [ebp + 0x1c], edx
cdq
add eax, ecx
adc edx, dword [ebp - 0x34]
mov dword [ebp + 0x18], ecx
cmp dword [ebp - 0x34], edx
mov dword [ebp], eax
mov dword [ebp + 4], edx
jg 0x3004614f
jl 0x300460ec
cmp ecx, eax
jae 0x3004614f
mov eax, dword [edi]
push 1
push dword [ebp + 0x1c]
mov ecx, edi
push dword [ebp + 0x18]
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 0x61766343
jne 0x30046114
cmp edx, ebx
je 0x3004612f
add dword [ebp + 0x18], 1
adc dword [ebp + 0x1c], ebx
mov eax, dword [ebp + 0x1c]
cmp eax, dword [ebp + 4]
jl 0x300460ec
jg 0x3004614f
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp]
jb 0x300460ec
jmp 0x3004614f
mov eax, dword [edi]
push ebx
push 0xffffffffffffffff
push 0xfffffffffffffff8
mov ecx, edi
call dword [eax + 0xc]
push dword [ebp + 4]
mov ecx, esi
push dword [ebp]
push dword [ebp + 0x74]
push dword [ebp + 0x70]
push edi
call fcn.30045241
mov eax, dword [edi]
push 1
push dword [ebp + 4]
push dword [ebp]
jmp 0x30046189
cmp ecx, eax
je 0x30046177
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
mov byte [esi + 0x1c], 1
mov eax, dword [edi]
mov ecx, dword [ebp + 0x50]
mov dword [ebp + 0x30], eax
lea eax, [ecx - 0x56]
cdq
push ebx
push edx
push eax
mov eax, dword [ebp + 0x30]
mov ecx, edi
call dword [eax + 0xc]
mov dword [esi + 0x15478], ebx
jmp 0x30045f18
cmp eax, 0x6a706567
je 0x30045ef0
cmp eax, 0x6d703461
je 0x30046460
cmp eax, 0x706e6720
je 0x30045ef0
cmp eax, 0x74657874
je 0x3004642f
cmp eax, 0x74783367
jne 0x30045f08
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6a], 1
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x2c], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x30], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x34], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x38], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x3c], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x40], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x48], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x44], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x4c], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x50], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x54], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x58], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x5c], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x60], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x64], eax
mov eax, dword [esi + 0x15478]
mov eax, dword [eax + 0x64]
cmp eax, ebx
mov dword [ebp + 0x30], ebx
je 0x3004641d
imul eax, eax, 0x104
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x68], eax
mov eax, dword [esi + 0x15478]
cmp dword [eax + 0x64], ebx
mov dword [ebp + 0x58], ebx
jbe 0x3004641d
mov dword [ebp + 0x4c], ebx
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov edx, dword [ecx + 0x68]
mov ecx, dword [ebp + 0x4c]
mov dword [ecx + edx], eax
mov eax, dword [esi + 0x15478]
mov eax, dword [eax + 0x68]
push 0x100
lea eax, [eax + ecx + 4]
push ebx
push eax
call fcn.3022b3a0
add esp, 0xc
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [ebp + 0x4c]
mov edx, dword [edi]
push ebx
push eax
mov dword [ebp + 0x24], eax
mov eax, dword [esi + 0x15478]
mov eax, dword [eax + 0x68]
lea eax, [eax + ecx + 4]
push eax
mov ecx, edi
call dword [edx + 0x10]
mov eax, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x24]
inc dword [ebp + 0x58]
add dword [ebp + 0x4c], 0x104
lea eax, [eax + ecx - 3]
mov ecx, dword [ebp + 0x58]
mov dword [ebp + 0x30], eax
mov eax, dword [esi + 0x15478]
cmp ecx, dword [eax + 0x64]
jb 0x30046390
mov ecx, dword [ebp + 0x50]
sub ecx, dword [ebp + 0x30]
mov byte [esi + 0x1f], 1
sub ecx, 0x30
jmp 0x30045f0e
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6a], 1
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
mov byte [esi + 0x1f], 1
jmp 0x30045f08
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f69], 1
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
push ebx
push ebx
mov dword [ebp + 0x24], eax
mov eax, dword [edi]
push 6
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 8], eax
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15478]
push ebx
mov dword [ecx + 0xc], eax
mov eax, dword [edi]
push ebx
push 4
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 0x15478]
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
fmul qword [0x30231818]
fstp qword [eax + 0x10]
mov eax, dword [esi + 0x15478]
cmp dword [eax], 0x2e6d7033
jne 0x3004651a
cmp byte [esi + 0x1d], bl
jne 0x3004651a
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [esi + 0x1d], 1
mov byte [eax + esi + 0x11f6b], 1
mov eax, dword [ebp + 0x50]
add eax, 0xffffffdc
cmp dword [ebp + 0x24], 1
mov dword [ebp + 0x4c], eax
jne 0x30046538
mov eax, dword [edi]
push ebx
push ebx
push 0x10
mov ecx, edi
call dword [eax + 0xc]
sub dword [ebp + 0x4c], 0x10
mov eax, dword [esi + 0x15478]
cmp dword [eax], 0x6d703461
mov eax, dword [edi]
mov ecx, edi
jne 0x300465e6
call dword [eax + 0x18]
mov ecx, eax
mov eax, dword [ebp + 0x4c]
mov dword [ebp - 0x3c], edx
mov dword [ebp + 0x14], edx
cdq
add eax, ecx
adc edx, dword [ebp - 0x3c]
mov dword [ebp + 0x10], ecx
cmp dword [ebp - 0x3c], edx
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
jg 0x300465d9
jl 0x30046576
cmp ecx, eax
jae 0x300465d9
mov eax, dword [edi]
push 1
push dword [ebp + 0x14]
mov ecx, edi
push dword [ebp + 0x10]
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 0x65736473
jne 0x3004659e
cmp edx, ebx
je 0x300465b9
add dword [ebp + 0x10], 1
adc dword [ebp + 0x14], ebx
mov eax, dword [ebp + 0x14]
cmp eax, dword [ebp + 0xc]
jl 0x30046576
jg 0x300465d9
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp + 8]
jb 0x30046576
jmp 0x300465d9
mov eax, dword [edi]
push ebx
push 0xffffffffffffffff
push 0xfffffffffffffff8
mov ecx, edi
call dword [eax + 0xc]
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
push dword [ebp + 0x74]
push dword [ebp + 0x70]
push edi
call fcn.30045241
push 1
push dword [ebp + 0xc]
push dword [ebp + 8]
jmp 0x30045f11
mov dword [ebp + 0x24], eax
mov eax, dword [ebp + 0x4c]
cdq
push ebx
push edx
push eax
mov eax, dword [ebp + 0x24]
jmp 0x30045f15
cmp dword [esi + 0xc], ebx
je 0x30046606
mov byte [esi + 0x18], 1
jmp 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xfffffffc
push ebx
push 8
adc dword [ebp + 0x60], 0xffffffff
push dword [ebp + 0x60]
push dword [ebp + 0x5c]
call fcn.3022bfa0
or ecx, ebx
mov dword [ebp + 0x24], edx
jne 0x300466a5
xor ebx, ebx
cmp eax, ebx
mov dword [esi + 8], eax
je 0x30046fb6
cmp eax, 0x200000
jae 0x30046fb6
shl eax, 3
push eax
call fcn.300367dc
cmp dword [esi + 8], ebx
pop ecx
mov dword [esi + 0xc], eax
jbe 0x300466a5
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0xc]
mov dword [ecx + ebx*8], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
add dword [ebp + 0x5c], 0xfffffff8
mov ecx, dword [esi + 0xc]
mov dword [ecx + ebx*8 + 4], eax
adc dword [ebp + 0x60], 0xffffffff
inc ebx
cmp ebx, dword [esi + 8]
jb 0x3004666e
xor ebx, ebx
mov eax, dword [edi]
push ebx
push dword [ebp + 0x60]
mov ecx, edi
push dword [ebp + 0x5c]
call dword [eax + 0xc]
cmp byte [ebp + 0x6f], bl
je 0x300452b5
cmp byte [ebp + 0x57], bl
je 0x3004688e
mov al, byte [esi + 0x19]
jmp 0x30046890
cmp dword [esi + 0x15454], ebx
jne 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
jne 0x30046737
mov eax, dword [edi]
push ebx
push ebx
push 0xb
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
mov dword [esi + 0x15454], eax
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
add dword [ebp + 0x5c], 0xffffffec
mov dword [esi + 0x15458], eax
mov dword [esi + 0x1545c], edx
adc dword [ebp + 0x60], 0xffffffff
jmp 0x300466a7
cmp eax, 1
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 0x13
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, ebx
mov dword [esi + 0x15454], eax
je 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 8
push edi
mov ecx, esi
call fcn.300fcf1d
cmp edx, ebx
mov dword [esi + 0x15458], eax
mov dword [esi + 0x1545c], edx
jl 0x30046fb6
jg 0x30046793
cmp eax, ebx
jb 0x30046fb6
add dword [ebp + 0x5c], 0xffffffe0
jmp 0x3004672e
cmp eax, 0x7374737a
je 0x30046e0a
cmp eax, 0x73747473
je 0x300453f2
cmp eax, 0x7469746c
je 0x3004694a
cmp eax, 0x746b6864
je 0x3004689a
cmp eax, 0x7472616b
je 0x300467d6
cmp eax, 0x75647461
jmp 0x30045686
lea ecx, [esi + 0x15450]
mov eax, dword [ecx]
cmp eax, 0x40
jae 0x30046fba
mov edx, dword [esi + 0x15454]
inc eax
mov dword [ecx], eax
imul eax, eax, 0xd0
mov dword [eax + esi + 0x11fcc], edx
mov eax, dword [ecx]
imul eax, eax, 0xd0
or dword [eax + esi + 0x1201c], 0xffffffff
mov eax, dword [ebp + 0x58]
cmp eax, 0x6d657461
jne 0x30046825
mov eax, dword [edi]
push ebx
push ebx
push 4
mov ecx, edi
call dword [eax + 0xc]
mov eax, dword [ebp + 0x58]
cmp eax, 0x6d6f6f76
jne 0x3004685a
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
mov dword [esi + 0x15468], eax
mov dword [esi + 0x1546c], edx
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
cmp dword [ebp + 0x2c], edx
jg 0x30047267
jl 0x3004685a
cmp dword [ebp + 0x28], eax
ja 0x30047267
push dword [ebp + 0x2c]
mov ecx, esi
push dword [ebp + 0x28]
push dword [ebp + 0x74]
push dword [ebp + 0x70]
push edi
call fcn.30045241
test al, al
je 0x30046fba
cmp dword [ebp + 0x58], 0x6d6f6f76
jne 0x300452b5
mov ecx, esi
call fcn.300fcf1d
mov byte [esi + 0x19], 1
mov al, 1
pop edi
pop esi
pop ebx
add ebp, 0x64
leave
ret 0x14
cmp dword [esi + 0x15450], ebx
je 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
push ebx
push ebx
mov dword [ebp + 0x40], eax
mov eax, dword [edi]
push 3
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xfffffffc
adc dword [ebp + 0x60], 0xffffffff
cmp dword [ebp + 0x40], ebx
jne 0x300468e0
mov eax, dword [edi]
push ebx
push ebx
push 0x14
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xffffffec
jmp 0x300468f9
cmp dword [ebp + 0x40], 1
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 0x20
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xffffffe0
mov eax, dword [edi]
adc dword [ebp + 0x60], 0xffffffff
push ebx
push ebx
push 0x10
mov ecx, edi
call dword [eax + 0xc]
add dword [ebp + 0x5c], 0xfffffff0
mov dword [ebp + 0x4c], ebx
adc dword [ebp + 0x60], 0xffffffff
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0x34
add ecx, dword [ebp + 0x4c]
add dword [ebp + 0x5c], 0xfffffffc
mov dword [esi + ecx*4 + 0x11f6c], eax
adc dword [ebp + 0x60], 0xffffffff
inc dword [ebp + 0x4c]
cmp dword [ebp + 0x4c], 9
jl 0x30046913
jmp 0x300466a7
cmp dword [esi + 0x1544c], 0x100
jae 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
test eax, eax
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
push dword [ebp + 0x60]
push dword [ebp + 0x5c]
push ebx
push 0xffff
call fcn.300fcf1d
mov ecx, dword [ebp + 0x58]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
mov dword [eax + esi + 0x3c], 1
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
add esp, 0x10
mov dword [eax + esi + 0x38], ecx
lea eax, [ebp + 0x6f]
push eax
push 2
push edi
mov ecx, esi
mov dword [ebp - 0xc], edx
call fcn.300fcf1d
mov ecx, dword [esi + 0x1544c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
mov dword [ecx + esi + 0x154], eax
mov eax, dword [ebp - 0x10]
inc eax
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x1544c]
push dword [ebp - 0xc]
lea ecx, [ecx + ecx*8]
push dword [ebp - 0x10]
shl ecx, 5
mov dword [ecx + esi + 0x144], eax
mov eax, dword [esi + 0x1544c]
mov edx, dword [edi]
lea eax, [eax + eax*8]
shl eax, 5
push dword [eax + esi + 0x144]
mov ecx, edi
call dword [edx + 0x10]
mov eax, dword [esi + 0x1544c]
lea eax, [eax + eax*8]
shl eax, 5
mov ecx, dword [eax + esi + 0x144]
mov eax, dword [ebp - 0x10]
mov byte [eax + ecx], bl
push 0xfffffffffffffffa
pop ecx
sub ecx, eax
push 0xffffffffffffffff
pop eax
sbb eax, dword [ebp - 0xc]
add dword [ebp + 0x5c], ecx
adc dword [ebp + 0x60], eax
inc dword [esi + 0x1544c]
jmp 0x300466a7
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea ecx, [eax + esi + 0x11fc4]
cmp dword [ecx], ebx
jne 0x30046fb6
mov eax, dword [ebp + 0x50]
mov dword [ecx], eax
lea eax, [eax + eax*2]
shl eax, 3
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x50], ebx
mov dword [ecx + esi + 0x11fc8], eax
jbe 0x300466a7
mov eax, dword [ebp + 0x50]
mov dword [ebp + 0x40], ebx
mov dword [ebp + 0x34], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov edx, dword [ecx + esi + 0x11fc8]
mov ecx, dword [ebp + 0x40]
mov dword [ecx + edx], eax
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov eax, dword [eax + esi + 0x11fc8]
add dword [ebp + 0x5c], 0xfffffffc
mov dword [eax + ecx + 8], ebx
mov dword [eax + ecx + 0xc], ebx
adc dword [ebp + 0x60], 0xffffffff
add ecx, 0x18
dec dword [ebp + 0x34]
mov dword [ebp + 0x40], ecx
jne 0x30046aa2
jmp 0x300466a7
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea ecx, [eax + esi + 0x11f9c]
cmp dword [ecx], ebx
jne 0x30046fb6
mov eax, dword [ebp + 0x50]
mov dword [ecx], eax
lea eax, [eax + eax*2]
shl eax, 2
mov dword [ebp + 0x24], eax
add eax, 0xc
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
add ecx, 0x162
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x50], ebx
mov dword [ecx + esi], eax
mov dword [ebp - 8], ebx
mov dword [ebp - 4], ebx
jbe 0x30046c0d
mov eax, dword [ebp + 0x50]
mov dword [ebp + 0x58], ebx
mov dword [ebp + 0x40], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
add ecx, 0x162
imul ecx, ecx, 0xd0
mov ecx, dword [ecx + esi]
dec eax
mov dword [edx + ecx], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
add dword [ebp - 8], eax
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
adc dword [ebp - 4], ebx
add ecx, 0x162
imul ecx, ecx, 0xd0
mov ecx, dword [ecx + esi]
mov dword [ecx + edx + 4], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
add ecx, 0x162
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xfffffff4
mov ecx, dword [ecx + esi]
mov dword [ecx + edx + 8], eax
adc dword [ebp + 0x60], 0xffffffff
add dword [ebp + 0x58], 0xc
dec dword [ebp + 0x40]
jne 0x30046b5c
cmp dword [ebp - 4], ebx
ja 0x30046fb6
jb 0x30046c0d
cmp dword [ebp - 8], 0xffffff
ja 0x30046fb6
mov ecx, dword [esi + 0x15450]
mov eax, 0x162
add ecx, eax
imul ecx, ecx, 0xd0
mov edx, dword [ecx + esi]
mov ecx, dword [ebp + 0x24]
or dword [ecx + edx], 0xffffffff
mov edx, dword [esi + 0x15450]
add edx, eax
imul edx, edx, 0xd0
mov edx, dword [edx + esi]
mov dword [edx + ecx + 4], ebx
mov edx, dword [esi + 0x15450]
add edx, eax
imul edx, edx, 0xd0
mov eax, dword [edx + esi]
mov dword [eax + ecx + 4], ebx
jmp 0x30046f7f
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea eax, [eax + esi + 0x11fbc]
cmp dword [eax], ebx
jne 0x30046fb6
mov ecx, dword [ebp + 0x50]
mov dword [eax], ecx
mov eax, ecx
shl eax, 3
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x50], ebx
mov dword [ecx + esi + 0x11fc0], eax
mov dword [ebp + 0x58], ebx
jbe 0x300466a7
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
imul ecx, ecx, 0xd0
mov ecx, dword [ecx + esi + 0x11fc0]
mov dword [ecx + edx*8], eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
mov edx, dword [ebp + 0x58]
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xfffffff8
mov ecx, dword [ecx + esi + 0x11fc0]
mov dword [ecx + edx*8 + 4], eax
adc dword [ebp + 0x60], 0xffffffff
inc dword [ebp + 0x58]
mov eax, dword [ebp + 0x58]
cmp eax, dword [ebp + 0x50]
jb 0x30046ca4
jmp 0x300466a7
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea eax, [eax + esi + 0x11fac]
cmp dword [eax], ebx
jne 0x30046fb6
mov ecx, dword [ebp + 0x50]
mov dword [eax], ecx
mov eax, ecx
shl eax, 3
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x50], ebx
mov dword [ecx + esi + 0x11fb0], eax
mov dword [ebp + 0x4c], ebx
jbe 0x30046f7f
cmp dword [ebp + 0x58], 0x636f3634
lea eax, [ebp + 0x6f]
mov ecx, esi
push eax
jne 0x30046dc7
mov ebx, dword [ebp + 0x4c]
push 8
shl ebx, 3
push edi
mov dword [ebp + 0x40], ebx
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov ecx, dword [ecx + esi + 0x11fb0]
mov dword [ebx + ecx], eax
mov dword [ebx + ecx + 4], edx
mov eax, dword [esi + 0x15450]
mov ecx, dword [ebp + 0x40]
imul eax, eax, 0xd0
mov eax, dword [eax + esi + 0x11fb0]
xor ebx, ebx
cmp dword [ecx + eax + 4], ebx
jl 0x30046fb6
jg 0x30046dbd
cmp dword [ecx + eax], ebx
jb 0x30046fb6
add dword [ebp + 0x5c], 0xfffffff8
adc dword [ebp + 0x60], 0xffffffff
jmp 0x30046df6
push 4
push edi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov ebx, dword [ecx + esi + 0x11fb0]
mov ecx, dword [ebp + 0x4c]
add dword [ebp + 0x5c], 0xfffffffc
mov dword [ebx + ecx*8], eax
mov dword [ebx + ecx*8 + 4], edx
adc dword [ebp + 0x60], 0xffffffff
xor ebx, ebx
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [ebp + 0x50]
jb 0x30046d56
jmp 0x30046f7f
mov eax, dword [esi + 0x15450]
cmp eax, ebx
je 0x30046fb6
imul eax, eax, 0xd0
cmp dword [eax + esi + 0x11fa4], ebx
jne 0x30046fb6
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
or eax, edx
jne 0x300466a7
mov eax, dword [edi]
push ebx
push ebx
push 3
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
add dword [ebp + 0x5c], 0xfffffff4
push ebx
push 4
adc dword [ebp + 0x60], 0xffffffff
push dword [ebp + 0x60]
mov dword [ebp + 0x58], eax
push dword [ebp + 0x5c]
call fcn.300d3150
push edx
push eax
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
push ebx
push eax
call fcn.300fcf1d
add esp, 0x10
cmp eax, ebx
mov dword [ebp + 0x4c], eax
jne 0x30046e9d
cmp dword [ebp + 0x58], ebx
je 0x30046fb6
cmp dword [ebp + 0x4c], 0x400000
ja 0x30046fb6
cmp dword [ebp + 0x58], 0xffffff
ja 0x30046fb6
cmp dword [ebp + 0x58], ebx
jne 0x30046f35
mov ecx, dword [esi + 0x15450]
mov eax, dword [ebp + 0x4c]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fa4], eax
shl eax, 2
push eax
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
cmp dword [ebp + 0x4c], ebx
mov dword [ecx + esi + 0x11fa8], eax
mov dword [ebp + 0x40], ebx
jbe 0x30046f7f
lea eax, [ebp + 0x6f]
push eax
push 4
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
add dword [ebp + 0x5c], 0xfffffffc
mov edx, dword [ecx + esi + 0x11fa8]
mov ecx, dword [ebp + 0x40]
adc dword [ebp + 0x60], 0xffffffff
mov dword [edx + ecx*4], eax
inc ecx
cmp ecx, dword [ebp + 0x4c]
mov dword [ebp + 0x40], ecx
jb 0x30046efb
jmp 0x30046f7f
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
push 4
mov dword [eax + esi + 0x11fa4], 1
call fcn.300367dc
pop ecx
mov ecx, dword [esi + 0x15450]
imul ecx, ecx, 0xd0
mov dword [ecx + esi + 0x11fa8], eax
mov eax, dword [esi + 0x15450]
mov ecx, dword [ebp + 0x58]
imul eax, eax, 0xd0
mov eax, dword [eax + esi + 0x11fa8]
mov dword [eax], ecx
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
lea eax, [eax + esi + 0x11f90]
inc dword [eax]
jmp 0x300466a7
mov byte [esi + 0x18], 1
jmp 0x300466be
mov eax, dword [edi]
push 1
push dword [ebp + 0x7c]
mov ecx, edi
push dword [ebp + 0x78]
call dword [eax + 0xc]
jmp 0x300466be
mov byte [esi + 0x18], 1
xor al, al
jmp 0x30046890
cmp dword [esi + 0x15478], ebx
je 0x300466be
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov eax, dword [esi + 0x15478]
mov ecx, dword [ebp + 0x5c]
mov dword [eax + 0x28], ecx
mov eax, dword [edi]
push ebx
push 4
lea ecx, [ebp + 0x6c]
push ecx
mov ecx, edi
call dword [eax + 0x10]
cmp byte [ebp + 0x6c], 1
jne 0x30046fba
cmp byte [esi + 0x1b], bl
movzx eax, byte [ebp + 0x6d]
mov dword [esi + 0x24], eax
movzx eax, byte [ebp + 0x6f]
mov dword [esi + 0x28], eax
jne 0x300466be
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
mov byte [esi + 0x1b], 1
mov byte [esi + 0x1c], 1
jmp 0x300466be
push ebx
push ebx
push 2
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 4
jne 0x300466be
cmp edx, ebx
jne 0x300466be
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
test al, al
js 0x30047062
mov eax, dword [edi]
push ebx
push ebx
push 0xd
mov ecx, edi
call dword [eax + 0xc]
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
cmp eax, 5
jne 0x300466be
cmp edx, ebx
jne 0x300466be
mov dword [ebp + 0x74], ebx
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov edx, dword [ebp + 0x74]
mov ecx, eax
and ecx, 0x7f
shl edx, 7
or ecx, edx
test al, al
mov dword [ebp + 0x74], ecx
js 0x300470a1
cmp ecx, 0x100000
jae 0x300466be
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x18]
mov ecx, dword [esi + 0x15478]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov eax, dword [esi + 0x15478]
mov ecx, dword [ebp + 0x74]
mov dword [eax + 0x28], ecx
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x74], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x7c], eax
mov eax, dword [ebp + 0x74]
shr eax, 3
cmp eax, 1
mov dword [esi + 0x2c], eax
je 0x3004712c
cmp eax, 2
je 0x3004712c
cmp eax, 5
jne 0x300466be
mov ecx, dword [ebp + 0x7c]
mov edx, dword [ebp + 0x74]
and edx, 7
mov eax, ecx
shr eax, 7
shl edx, 1
or eax, edx
cmp eax, 0xf
mov dword [ebp - 0x88], 0x17700
mov dword [ebp - 0x84], 0x15888
mov dword [ebp - 0x80], 0xfa00
mov dword [ebp - 0x7c], 0xbb80
mov dword [ebp - 0x78], 0xac44
mov dword [ebp - 0x74], 0x7d00
mov dword [ebp - 0x70], 0x5dc0
mov dword [ebp - 0x6c], 0x5622
mov dword [ebp - 0x68], 0x3e80
mov dword [ebp - 0x64], 0x2ee0
mov dword [ebp - 0x60], 0x2b11
mov dword [ebp - 0x5c], 0x1f40
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
je 0x300471ca
fild dword [ebp + eax*4 - 0x88]
mov eax, dword [esi + 0x15478]
shr ecx, 3
and ecx, 0xf
fstp qword [eax + 0x10]
mov eax, dword [esi + 0x15478]
mov dword [eax + 8], ecx
jmp 0x3004723d
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x74], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov dword [ebp + 0x24], eax
lea eax, [ebp + 0x6f]
push eax
push 1
push edi
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [ebp + 0x7c]
and ecx, 0x3f
shl ecx, 7
or ecx, dword [ebp + 0x74]
mov edx, eax
shl ecx, 8
or ecx, dword [ebp + 0x24]
shr edx, 7
shl ecx, 1
or ecx, edx
test ecx, ecx
mov dword [ebp + 0x6c], ecx
fild dword [ebp + 0x6c]
jge 0x30047225
fadd qword [0x30231808]
mov ecx, dword [esi + 0x15478]
fstp qword [ecx + 0x10]
mov ecx, dword [esi + 0x15478]
shr eax, 3
and eax, 0xf
mov dword [ecx + 8], eax
cmp byte [esi + 0x1a], bl
jne 0x300466be
mov eax, dword [esi + 0x15450]
imul eax, eax, 0xd0
mov byte [eax + esi + 0x11f6b], 1
mov byte [esi + 0x1a], 1
mov byte [esi + 0x1d], 1
jmp 0x300466be
mov eax, dword [ebp + 0x74]
cmp dword [ebp + 0x2c], eax
jl 0x30046fba
jg 0x30046fb6
mov eax, dword [ebp + 0x28]
cmp eax, dword [ebp + 0x70]
jbe 0x30046fba
jmp 0x30046fb6