Function at 0x424240
Capabilities:
Encrypt data using curve25519

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x358
push esi
mov esi, ecx
push edi
cmp dword [esi + 0xa0], 0
jne 0x42428f
mov eax, dword [0x4a3920]
push 0x4c
test eax, eax
je 0x424268
call eax
jmp 0x42426d
call fcn.00471b73
add esp, 4
mov dword [esi + 0xa0], eax
test eax, eax
jne 0x424282
lea edi, [eax - 0x7d]
jmp 0x4253ee
push 0x4c
push 0
push eax
call fcn.00469c30
add esp, 0xc
mov edi, dword [esi + 0xa0]
lea ecx, [esi + 0x320]
mov edx, 0x800
mov dword [esp + 0x20], edi
lea eax, [edi + 4]
mov dword [esp + 0x14], eax
test word [esi + 0x312], dx
je 0x4242cd
cmp byte [ecx], 5
je 0x4242c5
mov edi, 0xffffff40
mov ecx, eax
jmp 0x4253bd
lea eax, [esi + 0x320]
jmp 0x4242f1
push 0x30
push 0
push eax
mov byte [ecx], 0
call fcn.00469c30
mov eax, dword [esi + 0xa0]
lea ecx, [esi + 0x320]
add esp, 0xc
mov dword [eax], 0x422800
mov eax, ecx
movzx ecx, byte [ecx]
cmp ecx, 5
ja case.default.0x424302
mov edx, 0x100
jmp dword [ecx*4 + 0x42549c]
mov al, byte [esi + 0x1e5]
cmp al, 7
jne 0x424323
cmp byte [esi + 0x1e9], 0
je 0x424323
xor edi, edi
jmp 0x4253b9
movzx eax, al
sub eax, 2
je 0x424552
sub eax, 5
je 0x42433b
xor edi, edi
jmp 0x4253b9
cmp dword [esi + 0x3c4], 0x16d
lea eax, [esi + 0x3c8]
mov ecx, dword [eax]
jne 0x424415
test ecx, ecx
jne 0x4243b0
test eax, eax
je 0x4243ff
mov eax, dword [0x4a3920]
push 0x4c
test eax, eax
je 0x42436e
call eax
jmp 0x424373
call fcn.00471b73
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esi + 0x3c8], eax
lea ecx, [esi + 0x3c8]
test eax, eax
jne 0x424392
lea edi, [eax - 0x7d]
jmp 0x4253b9
push 0x4c
push 0
push eax
call fcn.00469c30
mov eax, dword [esp + 0x24]
add esp, 0xc
mov dword [eax + 4], 0x48cd08
lea eax, [esi + 0x3c8]
cmp byte [esi + 0x3cc], 0
jne 0x42473e
mov edx, dword [eax]
push ecx
mov ecx, esi
call fcn.004140c0
mov edi, eax
add esp, 4
test edi, edi
je 0x424409
cmp edi, 0xffffff94
je 0x424409
lea ecx, [esi + 0x3c8]
mov edx, 0x45
push ecx
mov ecx, esi
call fcn.004152f0
add esp, 4
cmp edi, 0xfffffeb9
jne 0x4253b9
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edi, 0xffffff53
jmp 0x4253b9
mov byte [esi + 0x3cc], 0x45
jmp 0x424732
test ecx, ecx
jne 0x42451c
test eax, eax
je 0x4243ff
mov eax, dword [0x4a3920]
push 0x105c
test eax, eax
je 0x424433
call eax
jmp 0x424438
call fcn.00471b73
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esi + 0x3c8], eax
test eax, eax
jne 0x424451
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov ecx, dword [esi + 0x88]
push 0x105c
push 0
push eax
mov dword [esp + 0x3c], ecx
call fcn.00469c30
mov eax, dword [esp + 0x24]
add esp, 0xc
lea edi, [eax + 0x18]
mov dword [esp + 0x1c], edi
lea ecx, [eax + 0x838]
lea edi, [eax + 0xc48]
test edi, edi
lea edx, [eax + 0x428]
mov edi, dword [esp + 0x20]
je 0x4244ae
mov dword [eax + 0xc54], 0
mov dword [eax + 0xc50], 0
mov dword [eax + 0xc4c], 0x101
cmp dword [esp + 0x1c], 0
je 0x4244d1
mov dword [eax + 0x18], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x20], 0
mov dword [eax + 0x1c], 0x101
test edx, edx
je 0x4244f0
mov dword [edx], 0
mov dword [edx + 0xc], 0
mov dword [edx + 8], 0
mov dword [edx + 4], 0x101
test ecx, ecx
je 0x42450f
mov dword [ecx], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 8], 0
mov dword [ecx + 4], 0x101
mov ecx, dword [esp + 0x30]
mov dword [eax + 0x14], ecx
lea eax, [esi + 0x3c8]
cmp byte [esi + 0x3cc], 0
jne 0x42473e
mov edx, dword [eax]
mov ecx, esi
push 0
call fcn.00413ee0
mov edi, eax
add esp, 4
test edi, edi
je 0x424546
cmp edi, 0xffffff94
jne 0x4243eb
mov byte [esi + 0x3cc], 0x25
jmp 0x424732
cmp dword [esi + 0x144], 0
je 0x424790
cmp dword [esi + 0x14c], 0
je 0x424790
cmp dword [esi + 0x154], 0
lea edi, [esi + 0x148]
jne 0x42459c
mov ecx, dword [edi]
call fcn.004439a0
mov dword [esi + 0x154], eax
test eax, eax
jne 0x424594
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov eax, dword [edi]
mov dword [esi + 0x158], eax
cmp dword [esi + 0x15c], 0
jne 0x4245d2
mov ecx, dword [edi]
call fcn.004439a0
mov dword [esi + 0x15c], eax
test eax, eax
jne 0x4245be
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov eax, dword [edi]
mov dword [esi + 0x160], eax
lea eax, [esi + 0x148]
mov dword [esp + 0x2c], eax
jmp 0x4245d6
mov dword [esp + 0x2c], edi
mov ax, word [edi]
mov edx, 0xf
mov word [esi + 0x328], ax
mov ecx, esi
lea eax, [esi + 0x164]
push eax
call fcn.00415410
mov edi, eax
add esp, 4
test edi, edi
jne 0x4243eb
movzx eax, word [esi + 0x312]
test eax, 0x200
je 0x424667
test eax, 0x400
jne 0x424667
push dword [esi + 0x7c]
mov eax, dword [esp + 0x30]
mov edx, dword [esi + 0x144]
sub esp, 0xc
mov ecx, dword [esi + 0x164]
push dword [esi + 0x150]
push dword [esi + 0x14c]
push dword [eax]
call fcn.00412340
mov edi, eax
add esp, 0x1c
test edi, edi
jne 0x4243eb
mov eax, 0x400
lea edx, [esi + 0x148]
or word [esi + 0x312], ax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x18], edx
jmp 0x42469f
push dword [esi + 0x150]
mov eax, dword [esp + 0x30]
push dword [esi + 0x14c]
mov edx, dword [esi + 0x144]
mov ecx, dword [esi + 0x164]
push dword [eax]
call fcn.00412360
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
test edi, edi
jne 0x4243eb
mov edx, dword [eax]
lea edi, [esi + 0x164]
cmp dword [esi + 0x158], edx
jae 0x4246de
mov ecx, dword [esi + 0x154]
add edx, 2
call fcn.004439e0
test eax, eax
jne 0x4246c9
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov dword [esi + 0x154], eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
add eax, 2
mov dword [esi + 0x158], eax
mov ecx, dword [edi]
lea edx, [esi + 0x160]
mov eax, dword [esi + 0x154]
test ecx, ecx
mov dword [esp + 0x1c], ecx
lea ecx, [esi + 0x158]
je 0x42472d
cmp dword [esi + 0x7c], 0
je 0x42472d
mov edi, dword [esi + 0x15c]
test edi, edi
je 0x42472d
test edx, edx
je 0x42472d
test eax, eax
je 0x42472d
test ecx, ecx
je 0x42472d
push ecx
mov ecx, dword [esp + 0x20]
push eax
push edx
mov edx, dword [esi + 0x7c]
push edi
call fcn.00411650
add esp, 0x10
mov edi, eax
jmp 0x424732
mov edi, 0xffffff53
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
mov byte [esi + 0x320], 1
mov edx, 0x100
movzx eax, byte [esi + 0x1e5]
sub eax, 2
je 0x424b5e
sub eax, 5
jne 0x424a8a
mov ecx, edx
mov dword [edi + 0x14], 9
mov dword [edi + 0x1c], 4
mov dword [edi + 0x28], 0x100
call fcn.004439a0
mov edx, eax
mov dword [edi + 8], edx
test edx, edx
jne 0x42479a
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov edi, 0xfffffec1
jmp 0x4253b9
cmp dword [esi + 0x3c4], 0x16d
lea eax, [edi + 0x28]
mov ecx, dword [esi + 0x3c8]
jne 0x4247c7
push ecx
push eax
call fcn.004107a0
add esp, 8
test eax, eax
je 0x4247de
mov edi, 0xfffffe9e
jmp 0x4253b9
push eax
call fcn.00432f40
add esp, 4
test eax, eax
je 0x4247de
mov edi, 0xfffffe9e
jmp 0x4253b9
mov eax, dword [edi + 0x28]
add dword [edi + 0x1c], eax
cmp dword [esi + 0x16c], 0
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 0x28], eax
jne 0x424805
mov edi, 0xfffffec3
jmp 0x4253b9
movzx eax, byte [esi + 0x318]
dec eax
cmp eax, 8
ja case.0x42526a.2
movzx eax, byte [eax + 0x4254c4]
jmp dword [eax*4 + 0x4254b4]
mov al, byte [esi + 0x170]
lea edx, [esp + 0x34]
and al, 0xc1
mov ecx, esi
or al, 1
mov byte [esi + 0x170], al
call fcn.0041f260
mov edi, eax
test edi, edi
jne 0x4243eb
movzx ecx, word [esp + 0x34]
jmp 0x4248a6
mov al, byte [esi + 0x170]
lea edx, [esp + 0x38]
and al, 0xc3
mov ecx, esi
or al, 3
mov byte [esi + 0x170], al
call fcn.0041f260
mov edi, eax
test edi, edi
jne 0x4243eb
movzx ecx, word [esp + 0x38]
jmp 0x4248a6
mov al, byte [esi + 0x170]
lea edx, [esp + 0x2c]
and al, 0xc9
mov ecx, esi
or al, 9
mov byte [esi + 0x170], al
call fcn.0041f260
mov edi, eax
test edi, edi
jne 0x4243eb
mov ecx, 0x40
mov edi, dword [esp + 0x20]
mov edx, 0x18
mov eax, edi
mov dword [eax + edx], ecx
lea edx, [ecx + 2]
add edx, dword [edi + 0x1c]
mov ecx, esi
mov dword [edi + 0x1c], edx
call fcn.00412470
test eax, eax
je 0x4248ce
add edx, 2
mov dword [edi + 0x1c], edx
lea eax, [edx + 9]
mov edx, 1
mov dword [esp + 0x18], eax
mov dword [edi + 0x2c], eax
call fcn.004124b0
test eax, eax
mov eax, dword [esp + 0x18]
je 0x4248f0
add eax, 0x66
mov dword [edi + 0x2c], eax
mov ecx, eax
call fcn.004439a0
mov ecx, eax
mov dword [edi + 0x10], ecx
test ecx, ecx
jne 0x424908
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov eax, dword [edi + 0x14]
lea edx, [edi + 4]
mov dword [edx], ecx
mov byte [ecx + eax], 3
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
inc ecx
mov dword [edi + 0x14], ecx
cmp dword [esi + 0x3c4], 0x16d
mov dword [esp + 0x1c], ecx
jne 0x424940
mov eax, dword [edx]
mov byte [ecx + eax], 0x1d
jmp 0x42497a
mov eax, dword [esi + 0x3c8]
test eax, eax
je 0x424969
mov eax, dword [eax + 0x10]
test eax, eax
je 0x424969
mov ecx, dword [eax + 0x34c]
call fcn.00423e70
mov ecx, dword [esp + 0x1c]
lea edx, [edi + 4]
mov byte [esp + 0x27], al
jmp 0x42496e
mov byte [esp + 0x27], 0
mov eax, dword [edx]
mov dl, byte [esp + 0x27]
mov byte [ecx + eax], dl
lea edx, [edi + 4]
mov eax, dword [edi + 0x14]
mov ecx, dword [edx]
inc eax
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x18]
mov dword [edi + 0x14], eax
mov al, byte [edi + 0x28]
mov byte [edx + ecx], al
mov ecx, dword [edi + 0x14]
push dword [edi + 0x28]
mov eax, dword [edi + 4]
inc ecx
push dword [edi + 8]
add eax, ecx
mov dword [edi + 0x14], ecx
push eax
call fcn.0046ae20
mov edx, dword [edi + 0x28]
add esp, 0xc
add edx, dword [edi + 0x14]
mov ecx, esi
mov dword [edi + 0x14], edx
call fcn.00412470
test eax, eax
je case.0x42526a.2
mov eax, dword [edi + 4]
mov cl, byte [esi + 0x317]
add eax, edx
mov dl, byte [esi + 0x318]
push eax
call fcn.00413560
add dword [edi + 0x14], 2
add esp, 4
movzx eax, byte [esi + 0x317]
sub eax, 4
je 0x424a0c
sub eax, 1
je 0x424a05
sub eax, 1
je 0x4249fe
mov edi, 0xffffff7b
jmp 0x4253b9
mov edx, 8
jmp 0x424a11
mov edx, 7
jmp 0x424a11
mov edx, 6
movzx eax, byte [esi + 0x318]
mov ecx, esi
push eax
mov eax, dword [esp + 0x18]
push dword [esp + 0x34]
mov eax, dword [eax]
add eax, dword [esp + 0x30]
push eax
call fcn.00420300
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
mov ecx, dword [edi + 0x18]
mov dword [edi + 0x20], ecx
movzx eax, byte [esi + 0x318]
sub eax, 1
je 0x424ad0
sub eax, 7
je 0x424a73
sub eax, 1
jne 0x424a8a
mov ecx, esi
call fcn.00413f90
mov edi, eax
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
jmp 0x424a8a
mov edx, dword [edi + 0x14]
add edx, dword [edi + 4]
movzx ecx, cx
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
add dword [edi + 0x14], 2
mov byte [esi + 0x320], 2
mov edx, 0x100
movzx eax, byte [esi + 0x1e5]
sub eax, 2
je 0x4251d2
sub eax, 5
jne 0x425229
movzx ecx, byte [esi + 0x318]
lea eax, [ecx - 1]
cmp eax, 8
ja case.0x42526a.2
movzx eax, byte [eax + 0x4254e0]
jmp dword [eax*4 + 0x4254d0]
mov ecx, esi
call fcn.00412470
test eax, eax
je 0x424b4f
mov ecx, 0x200
call fcn.004439a0
mov dword [esp + 0x18], eax
test eax, eax
jne 0x424af5
lea edi, [eax - 0x7d]
jmp 0x4253b9
movzx ecx, byte [esi + 0x317]
call fcn.00413690
mov edx, dword [esi + 0x130]
mov ecx, dword [esp + 0x18]
push eax
push dword [esi + 0x134]
call fcn.00439800
add esp, 8
mov dword [esi + 0x134], eax
cmp word [esi + 0x310], 0
jl 0x424b39
mov ecx, dword [esi + 0x130]
test ecx, ecx
je 0x424b39
call fcn.004439c0
mov eax, 0x7fff
and word [esi + 0x310], ax
mov eax, dword [esp + 0x18]
mov dword [esi + 0x130], eax
mov edx, dword [edi + 0x14]
add edx, dword [edi + 4]
movzx ecx, word [edi + 0x20]
jmp 0x424a7c
mov dword [edi + 0x1c], 6
mov dword [edi + 0x14], 9
mov ecx, dword [esi + 0x158]
add ecx, dword [esi + 0x150]
mov eax, dword [esi + 0x148]
add eax, 6
add eax, ecx
mov ecx, 0x100
mov dword [edi + 0x1c], eax
mov edx, eax
mov dword [esp + 0x1c], eax
test word [esi + 0x310], cx
jne 0x424c14
add eax, 2
mov dword [esp + 0x3c], 0
mov dword [edi + 0x1c], eax
cmp dword [esi + 0x16c], 0
jne 0x424bbb
mov edi, 0xfffffec3
jmp 0x4253b9
mov al, byte [esi + 0x170]
test al, 0x3f
jne 0x424bcf
and al, 0xc1
or al, 1
mov byte [esi + 0x170], al
lea edx, [esp + 0x3c]
mov ecx, esi
call fcn.0041f260
mov edi, eax
test edi, edi
jne 0x4243eb
mov eax, dword [esp + 0x3c]
test ax, ax
je 0x4253b9
mov edi, dword [esp + 0x20]
movzx ecx, ax
mov edx, dword [edi + 0x1c]
mov dword [edi + 0x18], ecx
add edx, ecx
mov ecx, esi
mov dword [edi + 0x1c], edx
call fcn.00412470
test eax, eax
je 0x424c14
add edx, 2
mov dword [edi + 0x1c], edx
lea ecx, [edx + 9]
mov dword [edi + 0x2c], ecx
cmp byte [esi + 0x304], 0
je 0x424c32
cmp byte [esi + 0xc9], 0
je 0x424c32
add ecx, 0x66
mov dword [edi + 0x2c], ecx
call fcn.004439a0
mov ecx, eax
mov dword [edi + 0x10], ecx
test ecx, ecx
jne 0x424c48
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov edx, dword [edi + 0x1c]
push esi
push 0xc
mov dword [edi + 4], ecx
call fcn.00416630
mov edx, dword [edi + 0x14]
movzx ecx, word [esi + 0x148]
add edx, dword [edi + 4]
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 4]
add ecx, 2
mov dword [edi + 0x14], ecx
add eax, ecx
push dword [esi + 0x148]
push dword [esi + 0x144]
push eax
call fcn.0046ae20
mov eax, dword [esi + 0x148]
add esp, 0x14
add eax, dword [edi + 0x14]
mov edx, dword [edi + 4]
mov dword [edi + 0x14], eax
add edx, eax
movzx ecx, word [esi + 0x150]
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 4]
add ecx, 2
mov dword [edi + 0x14], ecx
add eax, ecx
push dword [esi + 0x150]
push dword [esi + 0x14c]
push eax
call fcn.0046ae20
mov eax, dword [esi + 0x150]
add esp, 0xc
add eax, dword [edi + 0x14]
mov edx, dword [edi + 4]
mov dword [edi + 0x14], eax
add edx, eax
movzx ecx, word [esi + 0x158]
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 4]
add ecx, 2
mov dword [edi + 0x14], ecx
add eax, ecx
push dword [esi + 0x158]
push dword [esi + 0x154]
push eax
call fcn.0046ae20
mov edx, dword [esi + 0x158]
mov eax, 0x100
mov ecx, dword [edi + 0x14]
add esp, 0xc
add edx, ecx
mov dword [edi + 0x14], edx
test word [esi + 0x310], ax
jne 0x424a8a
mov ecx, esi
call fcn.00412470
test eax, eax
je case.0x42526a.2
mov eax, dword [edi + 4]
mov cl, byte [esi + 0x317]
add eax, edx
mov dl, byte [esi + 0x318]
push eax
call fcn.00413560
mov ecx, dword [edi + 0x14]
add esp, 4
add ecx, 2
mov dword [edi + 0x14], ecx
movzx eax, byte [esi + 0x317]
sub eax, 4
je 0x424da0
sub eax, 1
je 0x424d96
sub eax, 1
je 0x424d8c
mov edi, 0xffffff7b
jmp 0x4253b9
mov dword [esp + 0x28], 8
jmp 0x424da8
mov dword [esp + 0x28], 7
jmp 0x424da8
mov dword [esp + 0x28], 6
mov edx, dword [edi + 4]
add edx, ecx
movzx ecx, word [edi + 0x18]
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
mov ecx, esi
add dword [edi + 0x14], 2
movzx eax, byte [esi + 0x318]
mov edx, dword [esp + 0x28]
push eax
mov eax, dword [edi + 4]
push dword [esp + 0x20]
add eax, 9
push eax
call fcn.00420300
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x18]
mov dword [edi + 0x20], eax
movzx eax, byte [esi + 0x318]
sub eax, 1
jne 0x424a8a
mov ecx, esi
call fcn.00412470
test eax, eax
je 0x424a8a
mov ecx, 0x200
call fcn.004439a0
mov dword [esp + 0x18], eax
test eax, eax
jne 0x424e2d
lea edi, [eax - 0x7d]
jmp 0x4253b9
movzx ecx, byte [esi + 0x317]
call fcn.00413690
mov edx, dword [esi + 0x130]
mov ecx, dword [esp + 0x18]
push eax
push dword [esi + 0x134]
call fcn.00439800
add esp, 8
mov dword [esi + 0x134], eax
cmp word [esi + 0x310], 0
jl 0x424e71
mov ecx, dword [esi + 0x130]
test ecx, ecx
je 0x424e71
call fcn.004439c0
mov eax, dword [esp + 0x18]
mov ecx, 0x7fff
and word [esi + 0x310], cx
mov dword [esi + 0x130], eax
jmp 0x424a8a
mov edx, dword [esi + 0x130]
lea eax, [edi + 0x20]
push ecx
push dword [esi + 0xa4]
mov ecx, dword [edi + 0x14]
push eax
mov eax, dword [edi + 4]
add ecx, 2
add eax, ecx
mov ecx, esi
push eax
push dword [esi + 0x134]
call fcn.00413d70
add esp, 0x14
jmp 0x42521f
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 4]
add ecx, 2
mov edx, dword [esi + 0xa4]
add eax, ecx
mov ecx, dword [esi + 0x12c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x128]
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
test ecx, ecx
je 0x424f04
test eax, eax
je 0x424f04
lea ecx, [edi + 0x20]
test ecx, ecx
je 0x424f04
test edx, edx
je 0x424f04
test byte [edx + 0x60], 2
jne 0x424f0e
mov edi, 0xffffff53
jmp 0x425221
mov eax, dword [ecx]
mov dword [ecx], 0x40
cmp eax, 0x40
jae 0x424f25
mov edi, 0xffffff7c
jmp 0x425221
lea eax, [esp + 0x80]
add edx, 0x20
push eax
push ecx
mov ecx, dword [esp + 0x30]
call fcn.0044c4b0
mov edi, eax
add esp, 8
test edi, edi
jne 0x4243eb
mov al, byte [esp + 0x9f]
and byte [esp + 0x80], 0xf8
and al, 0x3f
or al, 0x40
push 0xe0
mov byte [esp + 0xa3], al
lea eax, [esp + 0x1e4]
push edi
push eax
call fcn.00469c30
mov eax, dword [esp + 0x34]
add esp, 0xc
mov eax, dword [eax + 0x64]
mov dword [esp + 0x2b8], eax
lea eax, [esp + 0x1e0]
push eax
call fcn.00428550
mov edi, eax
add esp, 4
test edi, edi
je 0x424fa6
js 0x425223
jmp 0x425039
push 0x20
lea edx, [esp + 0xa4]
lea ecx, [esp + 0x1e4]
call fcn.0042afc0
mov edi, eax
add esp, 4
test edi, edi
jne 0x425039
push dword [esp + 0x30]
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x1e4]
call fcn.0042afc0
mov edi, eax
add esp, 4
test edi, edi
jne 0x425039
lea ecx, [esp + 0x1e0]
call fcn.0042b190
mov edi, eax
test edi, edi
jne 0x425039
movups xmm0, xmmword [esp + 0x1e0]
lea eax, [esp + 0x1e0]
push eax
movups xmmword [esp + 0x44], xmm0
movups xmm0, xmmword [esp + 0x1f4]
movups xmmword [esp + 0x54], xmm0
movups xmm0, xmmword [esp + 0x204]
movups xmmword [esp + 0x64], xmm0
movups xmm0, xmmword [esp + 0x214]
movups xmmword [esp + 0x74], xmm0
call fcn.00428550
add esp, 4
mov edi, eax
mov eax, 0xe0
lea ecx, [esp + 0x1e0]
mov byte [ecx], 0
inc ecx
sub eax, 1
jne 0x425045
test edi, edi
jne 0x4243eb
lea ecx, [esp + 0x40]
call fcn.00462ac0
lea edx, [esp + 0x40]
lea ecx, [esp + 0x2c0]
call fcn.00466680
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x2c0]
call fcn.00467e30
push 0xe0
lea eax, [esp + 0x104]
push edi
push eax
call fcn.00469c30
mov eax, dword [esp + 0x34]
add esp, 0xc
mov eax, dword [eax + 0x64]
mov dword [esp + 0x1d8], eax
lea eax, [esp + 0x100]
push eax
call fcn.00428550
mov edi, eax
add esp, 4
test edi, edi
je 0x4250c4
js 0x425223
jmp 0x425183
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x100]
push 0x20
call fcn.0042afc0
mov edi, eax
add esp, 4
test edi, edi
jne 0x425183
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x100]
push 0x20
call fcn.0042afc0
mov edi, eax
add esp, 4
test edi, edi
jne 0x425183
push dword [esp + 0x30]
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x104]
call fcn.0042afc0
mov edi, eax
add esp, 4
test edi, edi
jne 0x425183
lea ecx, [esp + 0x100]
call fcn.0042b190
mov edi, eax
test edi, edi
jne 0x425183
movups xmm0, xmmword [esp + 0x100]
lea eax, [esp + 0x100]
push eax
movups xmmword [esp + 0xc4], xmm0
movups xmm0, xmmword [esp + 0x114]
movups xmmword [esp + 0xd4], xmm0
movups xmm0, xmmword [esp + 0x124]
movups xmmword [esp + 0xe4], xmm0
movups xmm0, xmmword [esp + 0x134]
movups xmmword [esp + 0xf4], xmm0
call fcn.00428550
add esp, 4
mov edi, eax
mov eax, 0xe0
lea ecx, [esp + 0x100]
nop
mov byte [ecx], 0
inc ecx
sub eax, 1
jne 0x425190
test edi, edi
jne 0x4243eb
lea ecx, [esp + 0xc0]
call fcn.00462ac0
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x84]
add ecx, 0x20
push eax
lea edx, [esp + 0xc8]
call fcn.00463fe0
add esp, 8
jmp 0x425221
movzx ecx, byte [esi + 0x318]
mov eax, ecx
sub eax, 1
je 0x4251e5
sub eax, 7
jne 0x425229
test word [esi + 0x310], dx
jne 0x425229
movzx eax, byte [esi + 0x317]
mov edx, dword [esi + 0x130]
push ecx
push dword [esi + 0xa4]
push eax
push ecx
lea eax, [edi + 0x20]
mov ecx, esi
push eax
mov eax, dword [edi + 0x14]
add eax, dword [edi + 4]
push eax
push dword [esi + 0x134]
call fcn.004136d0
add esp, 0x1c
mov edi, eax
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
mov edx, 0x100
mov byte [esi + 0x320], 3
movzx eax, byte [esi + 0x1e5]
sub eax, 2
je 0x4252d3
sub eax, 5
jne 0x425343
movzx eax, byte [esi + 0x318]
dec eax
cmp eax, 8
ja case.0x42526a.2
movzx eax, byte [eax + 0x4254f8]
jmp dword [eax*4 + 0x4254ec]
mov eax, dword [esi + 0xa4]
mov dword [esp + 0x1c], eax
cmp dword [edi + 0xc], 0
jne 0x42530d
mov ecx, dword [edi + 0x20]
test ecx, ecx
jne 0x425296
mov edi, 0xffffff1a
jmp 0x4253b9
call fcn.004439a0
mov edx, eax
mov dword [edi + 0xc], edx
test edx, edx
jne 0x4252f4
lea edi, [eax - 0x7d]
jmp 0x4253b9
mov edx, dword [edi + 0x14]
add edx, dword [edi + 4]
movzx ecx, word [edi + 0x20]
mov eax, ecx
shr eax, 8
mov byte [edx], al
mov byte [edx + 1], cl
mov edx, dword [edi + 0x20]
mov eax, edx
sub eax, dword [edi + 0x18]
sub edx, dword [edi + 0x18]
add dword [edi + 0x1c], eax
add dword [edi + 0x2c], edx
jmp 0x425343
movzx eax, byte [esi + 0x318]
sub eax, 1
jne 0x425343
mov eax, dword [esi + 0xa4]
mov dword [esp + 0x1c], eax
test word [esi + 0x310], dx
jne 0x425343
jmp 0x42527b
mov eax, dword [edi + 0x14]
lea ecx, [edi + 4]
push dword [edi + 0x20]
add eax, dword [ecx]
push eax
push edx
call fcn.0046ae20
mov eax, dword [esp + 0x28]
add esp, 0xc
mov edx, dword [edi + 0xc]
push ecx
push eax
movzx eax, byte [esi + 0x317]
push eax
movzx eax, byte [esi + 0x318]
push eax
push dword [esi + 0x134]
push dword [esi + 0x130]
push dword [edi + 0x20]
call fcn.00413780
mov edi, eax
add esp, 0x1c
test edi, edi
jne 0x4243eb
mov edi, dword [esp + 0x20]
lea eax, [esi + 0x320]
mov byte [esi + 0x320], 4
mov cl, byte [esi + 0x1e5]
cmp cl, 6
je 0x425364
cmp cl, 7
jne 0x425384
mov eax, dword [edi + 4]
lea ecx, [edi + 4]
test eax, eax
je 0x4253ad
mov edx, dword [edi + 0x1c]
mov ecx, eax
push esi
push 0xc
call fcn.00416630
add esp, 8
lea eax, [esi + 0x320]
mov byte [eax], 5
mov edx, dword [edi + 4]
sub esp, 8
mov ecx, esi
push dword [edi + 0x1c]
call fcn.004166a0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4243eb
mov byte [esi + 0x319], 7
jmp 0x4253b9
mov edi, 0xfffffeb8
jmp 0x4253bd
mov edi, 0xfffffed3
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4253ee
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4253ee
mov ecx, dword [0x4a3918]
push eax
test ecx, ecx
je 0x4253db
call ecx
jmp 0x4253e0
call fcn.00471b58
mov eax, dword [esp + 0x24]
add esp, 4
mov dword [eax + 0x10], 0
mov eax, dword [esi + 0xa0]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x42548c
mov ecx, dword [eax]
test ecx, ecx
je 0x42548c
add eax, 4
cmp ecx, 0x422800
jne 0x425479
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x425440
mov eax, dword [0x4a3918]
push ecx
test eax, eax
je 0x42542a
call eax
jmp 0x42542f
call fcn.00471b58
mov eax, dword [esp + 0x20]
add esp, 4
add eax, 4
mov dword [eax + 4], 0
mov eax, dword [eax + 8]
test eax, eax
je 0x425480
mov ecx, dword [0x4a3918]
push eax
test ecx, ecx
je 0x425464
call ecx
mov eax, dword [esp + 0x20]
add esp, 4
mov dword [eax + 0xc], 0
jmp 0x425480
call fcn.00471b58
mov eax, dword [esp + 0x20]
add esp, 4
mov dword [eax + 0xc], 0
jmp 0x425480
push eax
push esi
call ecx
add esp, 8
mov eax, dword [esi + 0xa0]
mov dword [eax], 0
mov ecx, esi
call fcn.004157e0
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret